Course Structure – Java Junior

Authors

dr Dinu Dragan, dr Slavica Kordić, dr Dušan Gajić, Milan Čeliković, Veljko Petrović, Vladimir Dimitrieski, Angelina Vujanović, Vladimir Ivković

Course length

250 classes, each lasting 45 minutes of active teaching time.

Conditions of enrollment

Proficiency in English necessary for independent work, referring to documentation, as well as research online to locate necessary tools for development.

Course goals

Enable students to independently develop applications of low and medium complexity using the Java  and JavaScript programming languages. Give students a solid knowledge base which will allow them to continue their education on their own, increasing their proficiency and mastery of programming techniques and environments.

Course structure

The course is divided into two parts: (i) The fundamentals of programming and (ii) Advanced programming techniques. As a part of the course special attention is to be paid to the Java programing language and its particularities. Each of the course parts is divided into three segments. A detailed description of the course segments is presented below:

  1. The Fundamentals of Programming (duration: 96 classes)
    1. The Fundamentals of Structured Programming
      1. Goal: The course will introduce basic concepts and methodology of procedural programming based on the Java programming language.
      2. Upon completion, the student should be able to: model solutions using structural modeling techniques and independently solve simple programming problems using the Java programming language. They should be able to actively participate in more advanced modules of the course.
      3. Module description: Phases of simple software development. Introduction to software development environment, Eclipse IDE. Developing simple programs in the Java programming environment. Introduction to software requirements analysis and specification. Design of simple JAVA programs. Working on real life examples and Java programming solutions. Overview of the basic structure of programs. The Java alphabet. Data types. Instructions for defining and naming identifiers. Choosing, defining, and naming constants, types, and variables. Using operators (arithmetical, logical, relational …) in the correct manner. Programming language control structures (IF, SWITCH, WHILE, FOR) and their use in the appropriate way. Data Structures: records, arrays, matrices, stacks, queues. Basic algorithms: simple operations (inserting, removal, minimum, maximum), searching (sequential and binary), sorting (bubble, heap, quick, bin, radix). Introduction to functions/modules. Input/output functions. Function parameters. Basic techniques for software testing. Implementing JAVA programs for simple problems which could occur in practice.
    2. The Fundamentals of Object Oriented Programming
      1. Goal: The course will introduce basic concepts and methodology of object-oriented programming and design using the Java programming language.
      2. Upon completion, the student should be able to: understand the principles of object-oriented paradigm, model solutions using object-oriented programming concepts, and independently solve low-to-medium complexity programming tasks using Java. The acquired knowledge should enable the course participants to actively take part in the more advanced modules.
      3. Module description: Problem modeling in object-oriented programming. Fundamentals of structured design: classes, objects, and their relationship. Message passing. Constructors and garbage collection. Basic concepts of the object-oriented paradigm: encapsulation, inheritance, polymorphism. Visibility and data access restriction mechanisms in object-oriented programming. Interfaces. Error handling with exceptions. Implementing data structures using object-oriented programming: linked lists, hashing and hash tables, trees, graphs – when to use what. Object-oriented design: basic design patterns (structural, creational, behavioral), Unified Modelling Language (UML). Fundamentals of software engineering. Phases in software development: requirements, modelling, implementation, testing, and documentation. Best practices in code construction.
    3. Database Fundamentals
      1. Goal: Basic education in databases. Students gain fundamental knowledge in databases and learn basic techniques of implementation, use and maintenance of databases.
      2. Upon completion, the student should be able to: model solutions using conceptual modeling techniques and independently solve simple problems using the ER diagram concepts. Students will be able to understand the relational data model and independently solve low-to- medium complexity tasks using relational database language SQL. They should be able to actively participate in more advanced modules of the course..
      3. Module description: The evolution of data management processes and the concept of a database. Basic concepts and characteristics of data models. The relational data model. The classification and management of database constraints in the relational data model: NOT NULL, UNIQUE, PRIMARY KEY, FOREIGN KEY, and CHECK constraints. Basic design techniques of relational database schemas. Basic characteristics of database management systems. The SQL language and relational databases – DML (INSERT, DELETE and UPDATE statements), DDL (CREATE, DROP and ALTER table and view) and QL (SELECT statements with WHERE, ORDER BY, GROUP BY clauses, inner and outer JOINS, nested queries, single row functions and group functions). Nested queries, operators ANY, ALL, and EXISTS. Views in SQL. Constraints within the relational model. Key constraints. NULL constraints. Foreign key constraints. Unique and check constraints. Relational database design by mapping the ER model to the relational model.
  2. Advanced Programming Techniques (duration: 154 classes)
    1. Web Front-End Development
      1. Goal: The course will introduce basic concepts and methodology of web front-end development based on modern HTML, CSS, JavaScript by way of TypeScript, and the Angular framework.
      2. Upon completion, the student should be able to: understand the large-scale structure of complex web applications, design web pages optimized for web application use and style them using CSS. Code competently in TypeScript and understand its role in the JavaScript ecosystem. Exercise command-line control over the NodeJS/npm environment, and know how to leverage it for purposes of web development. Develop simple web applications based on the Angular framework.
      3. Module description: Phases of modern JavaScript application development. Frameworks, libraries, and the interaction thereof. Working with TypeScript and the Visual Studio Code rich code editor. Necessary command line tools and package managers for working with a JavaScript project. The Angular framework and the importance of TypeScript. A HTML-centric approach to interface design. Separate styling of interface elements using CSS technologies. Reusable components in Angular and the implementation of directives for looping and conditionals using the Angular DSL. Guidelines and heuristics for modern interface design. The MVC pattern and program decoupling using dependency injection and binding. Two-way versus one-way information flow in interface design. Alternative libraries and frameworks.
    2. Software Development Principles and Web Application Back-end Development
      1. Goal: The course will introduce basic concepts and methodology of back-end design and development on a web application example using Java as the main programming language. The course will introduce basic principles and methodologies of software development on a Web application example using Java and JavaScript as the main programming languages.
      2. Upon completion, the student should be able to:
        1. understand the principles of good back-end design and applicable design patterns, independently develop low-to-medium complexity back-end components, understand one possible Java framework for back-end development and competently use the relevant libraries and frameworks to produce modern web-based back-ends.
        2. understand the principles of good software development and applicable software development methods, independently develop low-to-medium complexity web applications, understand agile software development methodology, and competently use the methodology to produce modern web application.
      3. Module description: Fundamentals of modern back-end development of web applications. Frameworks, libraries and the interaction thereof. Working with the Spring framework. Basic modules and concepts of Spring. Functional layers of a Spring applications. Necessary command line tools, IDEs and package repositories for working with a Spring project. The Maven tool and automatic library dependency resolution. Java-based Spring configuration and Spring Boot. The Hibernate library and data interaction. Repository and service layers, handling data input/output and implementing business logic. Developing, using and testing REST APIs. Building REST controllers in Spring. Testing backend functionality and creating unit tests. Fundamentals of an agile software development methodology. Usage of an agile software development methodology. Version control systems. Git. Necessary commands in the Git version control system: pull, commit, push, fetch. Issue and project tracking systems. Jira. Necessary concepts in Jira software. JavaScript and Java testing frameworks. Jasmine testing framework. Testing frontend functionalities.

The sections so presented are best taught in strict sequence, as each one depends on the former, especially in the fundamentals of programming sub-course.

Grading

Student grading is to be undertaken after the completion of each of the two major parts of the course. Each student is graded on a 1-100 scale each time, while the final course score is calculated as a weighted sum of the total points according to the following formula:

Points (total) = 0.4 x Points (part1) + 0.6 x Points (part2)

As part of the first part of the course, the students will take written tests which count for 100 of their points in total, with two counting for 30 points, and one, the one in Object Oriented Programming, for 40.  The goal of this test is to efficiently test knowledge of fundamental programming concepts. The test shall consist of questions and small programming challenges which can be completed very quickly.

After the second part of the course, the students will independently develop a software solution which will count for 100 points, i.e. 60% of the final grade. The project will be based around the development of a web application using what the students have learned in the entire course.

The total number of points is the direct indicator of the level of material comprehension and mastery each student has demonstrated. Based on the total number of points letters of recommendation of a differing natures will be written for each of the students.

 

More detailed overview of the course modules:


Curriculum of

Introduction to Programming

32 classes

GOAL

The course will introduce basic concepts and methodology of procedural programming based on the Java programming language.

TEACHING METHODOLOGY

The course centers around interactive lectures organized around the presentation of concepts and abstractions of procedural programming through presentations, question and answer sessions, and exercises, theoretical and practical, conducted both communally and individually.

Lecture classes are followed wherever practical with classes focusing on problem-solving exercises, using an active approach to teaching in accordance with the Felder and Silverman teaching styles taxonomy.

LEARNING OUTCOMES

Upon completion, the student should be able to model solutions using structural modeling techniques and independently solve simple programming problems using the JAVA programming language. They should be able to actively participate in more advanced modules of the course.

COURSE DESCRIPTION

Topic 1:   Introduction to algorithms                   (4)

  • Computer organization.
  • The art of programming.
  • Generations of programming languages.
  • Phases of simple software development.
  • The role of abstraction programming.
  • PRACTICAL WORK – simple problem solving.

Topic 2:   Software development                            (2)
environment                                                

  • Java programming language.
  • JDK and JRE.
  • JDKa and Eclipse IDE installation.
  • Eclipse overview.
  • New Eclipse project.
  • First Java program example.
  • PRACTICAL WORK – simple Java program developed by students.

Topic 3: Structure of Java program                      (2)

  • Overview of the basic structure of programs.
  • MAIN method.
  • Java packets and import function.
  • Java alphabet.

Topic 4:   Variables                                                  (2)

  • Definition of variables.
  • Data types.
  • Naming conventions, declaration, definition, and initialization.
  • Variable scope.
  • Introduction to Strings.
  • PRACTICAL WORK – examples of programs using String.
  • Constants (final).
  • PRACTICAL WORK – implementing programs with variables.

Topic 5:   Introduction to debugging                     (2)

  • Finding and correcting errors in programming code.
  • Code testing
  • Debugging in Eclipse IDE.
  • Debug View, Breakpoints, Variables panel, Step Into (F5) and Step Over (F6).
  • PRACTICAL WORK – code debugging examples (on programming code with intentional errors).

Topic 6:   Expressions                                              (2)

  • Introduction to expression and operators.
  • Arithmetic, relational, logical, assignment, and ternary operators.
  • Precedence rules.
  • Operator type matching.
  • Data type conversion.
  • PRACTICAL WORK – implementing programs with operators.

Topic 7:   String and Enum                                     (2)

  • Introduction to subroutines, classes, and objects.
  • Built-in subroutines and functions.
  • String class continued.
  • String class methods.
  • PRACTICAL WORK – String class examples.
  • Introduction to enums.
  • PRACTICAL WORK – enums examples.

Topic 8:   Basic input and output                           (2)

  • Input/output introduction.
  • Output – (System.out.).
  • Input – (TextIO klasa).
  • PRACTICAL WORK – using basic input and output functions.

Topic 9:   Selection                                                   (2)

  • Introduction to control structures.
  • Introduction to selection statements.
  • IF statement.
  • PRACTICAL WORK – using IF statement.
  • SWITCH statement.
  • Numbers, enums, and strings in SWITCH statement.
  • PRACTICAL WORK – using SWITCH statement.

Topic 10: Loops                                                        (2)

  • Introduction to loop statements.
  • DO-WHILE statements.
  • PRACTICAL WORK – using DO-WHILE statement.
  • FOR statements.
  • PRACTICAL WORK – using FOR statement.
  • WHILE statements.
  • PRACTICAL WORK – using WHILE statement.
  • Control structures nesting.
  • Break and continue.
  • PRACTICAL WORK – using control structure for solving complex problems.

Topic 11: Arrays                                                      (2)

  • Static data structures.
  • Arrays – declaration, definition, initialization, random access.
  • PRACTICAL WORK – using arrays.
  • Matrices – declaration, definition, initialization, random access.
  • PRACTICAL WORK – using matrices.
  • Multidimensional arrays.

Topic 12: Search and sorting                                  (2)

  • Arrays and matrices searching algorithms.
  • PRACTICAL WORK – implementation of arrays and matrices searching algorithms.
  • Arrays and matrices sorting algorithms.
  • PRACTICAL WORK – implementation of arrays and matrices sorting algorithms.

Topic 13: Subroutines                                             (2)

  • Introduction to subroutines.
  • Static and non-static subroutines.
  • Subroutines definition.
  • Calling subroutines.
  • Naming subroutines.
  • PRACTICAL WORK – solving problems using subroutines.

Topic 14: Practical work                                         (4)

  • Topics summary.
  • PRACTICAL WORK – implementing Java programs for simple problems which could occur in practice.

GRADING

  • Student grading is to be undertaken after the completion of the course.
  • Students will have one test.
  • Each student is graded on a 1-30 scale.
  • There are 6 theoretical questions graded on a 1-20 overall scale and 1 practical assignment graded on a 1-10.

LITERATURE

  1. David J. Eck, Introduction to Programming using Java, 7th edition, 2014. http://math.hws.edu/javanotes/
  2. Bruce Eckel, Thinking in Java, 4th edition, Prentice Hall, 2005 – prevod 4. izdanja, Misliti na Javi, Mikroknjiga, Beograd.
  3. Wladston Ferreira Filho, “Computer Science Distilled: Learn the Art of Solving Computational Problems”, Code Energy LLC, Las Vegas, 2017.

Curriculum

Introduction to Object-Oriented Programming

32 classes

GOAL

The course will introduce basic concepts and methodology of object-oriented programming and design using the Java programming language.

TEACHING METHODOLOGY

The course centers around interactive lectures organized around the presentation of the theoretical framework and practical use of modern object oriented programming and technique through presentations, question and answer sessions, and exercises, theoretical and practical, conducted both communally and individually.

Lecture classes are followed wherever practical with classes focusing on problem-solving exercises and rudiments of software design, using an active approach to teaching in accordance with the Felder and Silverman teaching styles taxonomy.

LEARNING OUTCOMES

Upon completion, students will be able to understand the object-oriented paradigm, model solutions using object-oriented programming, and independently solve low-to-medium complexity programming tasks using Java. The acquired knowledge should enable the course participants to actively take part in more advanced modules.

CONTENT

Topic 1.   Introduction to Object-Oriented Programming (OOP)    (2)

  • Concepts, properties, and advantages of object-oriented programming
  • Relationship between procedural and object-oriented programming

Topic 2.   Objects and Classes                                (2)

  • Definition, properties, and examples of objects
  • Definition, properties, and examples of classes
  • Variables and objects
  • PRACTICAL WORK – objects and classes

Topic 3.   Constructors, Access Control and Encapsulation (4)

  • Constructors and object initialization
  • Object paradigm
  • Abstract data types (ADT)
  • Access control attributes
  • Access control methods
  • Definition, properties, and examples of encapsulation
  • PRACTICAL WORK – constructors and access control

Topic 4.   Inheritance                                              (4)

  • Definition, properties, and examples of inheritance
  • Examples of inheritance
  • PRACTICAL WORK – inheritance

Topic 5.   Association, Aggregation, and Composition         (2)

  • Definition, properties, and examples of association, aggregation, and composition
  • PRACTICAL WORK – association, aggregation, and composition

Topic 6.   Polymorphism                                         (2)

  • Definition, properties, and examples of polymorphism
  • PRACTICAL WORK – polymorphism

Topic 7.   Abstract Classes and Interfaces            (4)

  • Definition, properties, and examples of abstract classes
  • Definition, properties, and examples of interfaces
  • Variables and interfaces
  • Frameworks and APIs
  • PRACTICAL WORK – abstract classes and interfaces

Topic 8.   Correctness and Robustness of Object-Oriented Programs            (2)

  • Concepts of correctness and robustness
  • Mechanism of exceptions
  • PRACTICAL WORK – handling of exceptions in programs

Topic 9.   Streams and Files                                   (2)

  • Definition, properties, and examples of streams
  • Definition, properties, and examples of files
  • PRACTICAL WORK – streams and files

Topic 10. Java Platform                                          (4)

  • OOP in Java
  • Java platform, Java API
  • Java archives – JAR
  • Documentation – Javadoc
  • Java Collections Framework (JCF)
  • Example – using JCF
  • PRACTICAL WORK – using JCF

Topic 11. UML, Principles of Object-Oriented Design                       (4)

  • Unified Modeling Language – UML
  • Types of UML diagrams
  • Object-oriented software design
  • Design patterns
  • Example – design patterns
  • PRACTICAL WORK – design patterns

GRADING

  • Students’ grading will be undertaken after the

completion of the lectures

  • Students will have to pass a test worth 40 points
  • The test will be composed of 6 theoretical questions, worth 25 points in total, and 2 practical assignments, worth 15 points in total

REFERENCES

  1. David J. Eck, Introduction to Programming using Java, 7th edition, 2014. http://math.hws.edu/javanotes/
  2. Bruce Eckel, Thinking in Java, 4th edition, Prentice Hall, 2005 – prevod 4. izdanja, Misliti na Javi, (in Serbian), Mikroknjiga, Beograd.
  3. Matt Weisfeld, Objektno orijentisani način mišljenja, (in Serbian), CET, Beograd.

Curriculum

Introduction to Databases

32 classes

GOAL

The course will introduce basic concepts and methodology of databases. Students gain fundamental knowledge in databases design and learn basic techniques of implementation, use and maintenance of databases.

TEACHING METHODOLOGY

The course centers around interactive lectures organized around the presentation of the fundamentals of modern relational database design, use, and application through presentations, question and answer sessions, and exercises, theoretical and practical, conducted both communally and individually.

Lecture classes are followed by, as long as it is practical, with revision, analysis of problems, and exercises.

LEARNING OUTCOMES

Upon completion, the student should be able to model solutions using conceptual modeling techniques and independently solve simple problems using the ER diagram concepts. Students will be able to understand the relational data model and independently solve low-to-medium complexity tasks using relational database language SQL. They should be able to actively participate in more advanced modules of the course.

CONTENT

Topic 1.   Introduction to Database System          (1)

  • Database system concepts
  • Concept of database management system (DBMS)
  • Concept of database schemas and views
  • Definition of key

Topic 2.   Data Models                                            (1)

  • Concept and role of data model in database design
  • Conceptual modeling and database design
  • Data model types
  • Introduction to relational data model and entity relationship model

Topic 3.   Data Modeling Using the Entity Relationship (ER) Model              (4)

  • Definition, properties, and examples of entity types
  • Definition, properties, and examples of relationship types
  • Definition, properties, and examples of weak entity types
  • Database design using ER diagram
  • PRACTICAL WORK – ER diagram examples (entity types, relationship types and weak entity types)

Topic 4.   Data Modeling Using the Extended Entity Relationship (EER) Model                                                                  (4)

  • Definition, properties, and examples of gerunds
  • Definition, properties, and examples of IS-A hierarchy and categorization
  • PRACTICAL WORK – ER diagram examples (gerunds, IS-A hierarchy and categorization)

Topic 5.   Relational data model                            (2)

  • Relational data model basic concepts
  • Purpose and scope of the SQL language
  • Introduction to environment for learning SQL language
  • Roles and users
  • PRACTICAL WORK – CREATE user

Topic 6.   SQL–Language of Relational Databases (2)

  • Basic SQL syntax
  • Definition, properties, and examples of schema and catalog concepts in SQL
  • PRACTICAL WORK – implementation of the database schema in SQL language, on the selected DBMS, based on given SQL scripts, for the selected example

Topic 7.   Data Definition Language (DDL)          (2)

  • SQL basic data types
  • Date data types – operations and functions
  • Alphanumeric data types – operations and functions
  • Schema change statements in SQL
  • PRACTICAL WORK – CREATE, ALTER, and DROP statements in SQL

Topic 8.   Data Manipulation Language (DML)   (2)

  • Insert tuple to the table
  • Delete tuple from the table
  • Update table data
  • PRACTICAL WORK – INSERT, UPDATE and DELETE statements in SQL

Topic 9.   SQL Queries                                            (4)

  • Basic structure of the SELECT command
  • NULL values, and arithmetic expressions
  • WHERE and ORDER BY clauses
  • DISTINCT clause and the use of logical and SQL operators (IN, LIKE, IS NULL)
  • Aggregate functions in SQL (min, max, sum, avg, count)
  • GROUP BY and HAVING clauses
  • PRACTICAL WORK – SQL queries examples

Topic 10. SQL Queries                                            (4)

  • Joined Tables in SQL and Outer Joins
  • Nested Queries
  • Correlated Nested Queries
  • Operators ANY, ALL, EXISTS
  • Efficiency of query execution
  • PRACTICAL WORK – SQL queries examples

Topic 11. Views in SQL                                           (2)

  • Definition, properties, and examples of view
  • Recapitulation of the SELECT command, within the view
  • PRACTICAL WORK – creating simple and complex views

Topic 12. Relational Model Constraints               (2)

  • Definition, properties, and examples of constraints
  • Key Constraints and Constraints on NULL Values
  • Unique and check constraints
  • Foreign key constraints
  • PRACTICAL WORK – Specifying constraints in SQL

Topic 13. Relational Database Design by ER to Relational Mapping              (2)

  • Mapping ER model constructs to relations

PRACTICAL WORK – examples of ER to Relational Mapping

GRADING

  • Student grading is to be undertaken after the completion of the course.
  • Students will have one test.
  • Each student is graded on a 1-30 scale.
  • The test will be composed of 5 practical assignments, worth 30 points in total

REFERENCES

  1. Date C. J, An Introduction to Database Systems (8th Edition)
  2. Ramez Elmasri, Shamkant B. Navathe, Fundamentals of Database Systems (6th Edition

Curriculum

Web Front-End

66 classes

GOAL

The course will introduce basic concepts and methodology of web front-end development based on modern HTML, CSS, JavaScript by way of TypeScript, and the Angular framework.

TEACHING METHODOLOGY

The course centers around an even mixture of practical work and interactive lectures, seeking to maintain a 1:1 ratio between practical exercises and interactive lectures presenting the theoretical foundations of front-end design in general and on the web, in particular.

Practical exercises are divided between problem-solving practice in which complex problems are solved through communal effort and individual work bolstered by consultations by the teacher.

LEARNING OUTCOMES

Upon completion the student should be able to understand the large-scale structure of complex web applications, design web pages optimized for web application use and style them using CSS. Code competently in TypeScript and understand its role in the JavaScript ecosystem. Exercise command-line control over the NodeJS/npm environment, and know how to leverage it for purposes of web development. Develop simple web applications based on the Angular framework.

Subject 1.                                   WEB PROTOCOLS             (3)

  • A review of previously learned on the subject of computer networks
  • Client/server architectures versus peer-to-peer architectures
  • The concept of a protocol in communications
  • HTTP/HTTPS
  • Expected responses and requests in HTTP/HTTPS
  • The nature and operation of a web browser
  • The use of tools for debugging HTTP communication and web development in general.
  • PRACTICAL EXERCISE: Studying the responses of a web application and examining web headers.

Subject 2. DEVELOPMENT ENVIRONMENT   (3)

  • The toolchain as a concept
  • The concept of a programmer’s editor
  • Making the best of the features available in programming editors
  • Modern programming editors, an overview
  • Version control and git
  • Installing the necessary tools: node, and npm.
  • Differences between windows and unix-like environments: nvm and nvm-windows.
  • PRACTICAL EXERCISE: Guided and independent setup of a development environment.

Subject 3. WEB DEVELOPMENT OVERVIEW (2)

  • A short history of web development
  • What are: HTML, CSS, Flex, JavaScript, TypeScript, and Angular and how do they fit one another.
  • What is a library?
  • Dependency management and npm.
  • PRACTICAL EXERCISE: Installing a library via npm nad examining what, precisely, gets installed.

Subject 4. WEB APP APPEARANCE I                 (8)

  • Markup languages
  • The difference between markup and programing
  • Examples of markup languages: Markdown
  • HTML5: structure and function, tags, attributes, and contents.
  • Semantic tags versus appearance tags.
  • Specifying the header via meta tags.
  • Linking assets to the main HTML document.
  • PRACTICAL EXERCISE: Writing HTML pages for various tasks:
  • Informative content-focused page.
  • Smart home interface page.
  • Data entry/form page.

Subject 5. WEB APP APPEARANCE II               (8)

  • The difference between style and structure of a document.
  • CSS: versions, purpose, and structure.
  • CSS selectors
  • CSS attributes
  • CSS functions
  • Color models & specifying color
  • CSS units
  • Page layout using CSS
  • Responsive CSS
  • CSS and accessibility
  • PRACTICAL EXERCISE: Styling the examples made previously. Using CSS to impose appearance and layout on a predefined structure.

Subject 6 WEB PROGRAMMING I                     (8)

  • What is JavaScript?
  • Why not work in JavaScript?
  • Hidden errors, weak typing, and the compatibility issue.
  • The universal use of transpiling.
  • The advantages of TypeScript
  • How does TypeScript work?
  • TypeScript presented through compare and contrast with the Java programming language.
  • Declaring variables: let and const.
  • New types of assignment: destructuring and spread.
  • Types, arrays, tuples, and arrays.
  • Precise uncertainty: any, void, null, undefined, and never.
  • Casting variables in TypeScript.
  • PRACTICAL EXERCISE: Fizzbuzz in TypeScript. Finding prime numbers. Sorting arrays. Computing Fibonacci numbers. Computing arbitrary number sequences.

Subject 7.                        WEB PROGRAMMING II             (8)

  • Interfaces in TypeScript: implicit implementation and contract-based programming.
  • TypeScript functions: types, optional and default parameters, anonymous functions, and function interfaces.
  • Anonymous functions in the arrow notation.
  • TypeScript classes.
  • Generic programming in TypeScript.
  • Specialized loops: for in and for of.
  • Low-level interaction with the web page.
  • PRACTICAL EXERCISE: Towers of Hanoi, Lengton’s Ant, The Game of Life. Learning how to model complex tasks.

Subject 7.      WEB PROGRAMMING III             (6)

  • Using TypeScript to control the web page without frameworks.
  • Representing Web pages using DOM.
  • How a conventional web app would work.
  • Why frameworks were invented.
  • PRACTICAL EXERCISE: Wiring a previously created and styled data entry form.

Subject 9. ANGULAR — INTRODUCTION      (10)

  • What is Angular? What is its purpose?
  • An analysis of the QuickStart Angular project as an example of a complexly configured solution.
  • Angular and tooling.
  • Angular CLI
  • Angular components: code and template. An example of further separation of appearance, structure, and behavior.
  • Bindings and directives: *nfIf and *ngFor.
  • Two-way binding for application interactivity.
  • Component styles
  • Event driven programming in Angular.
  • Event handling in Angular: handlers, pseudo-events, and $event.
  • Debugging an Angular/TS application.
  • Combining components in Angular.
  • Interaction between components in Angular.
  • PRACTICAL EXERCISE: Wiring a previously created and styled data entry form to communicated with an Angular application.

Subject 10. ADVANCED ANGULAR                  (10)

  • Angular services.
  • Externalization of data management functionality and mocking.
  • Lifecycle hooks.
  • Responsive application programming in Angular.
  • Asynchronous programming as a concept.
  • Callbacks as a mechanism of asynchronous programming.
  • Issues with callbacks.
  • Promises: then and catch.
  • Routing and navigating in complex projects.
  • Static and dynamic routes; parametrization of routes.
  • Location services and user navigation control.
  • Using pipes to filter bound data.
  • Routing modularization.
  • Programmatical routing and navigation.
  • Remote access to data using the HTTP protocol to access web services.
  • Promises and observable objects.
  • PRACTICAL EXERCISE: Writing a simple application which fetches data from a HTTP server and displays it in multiple views.

GRADING

  • Student grading is combined with the previous course.
  • The grading is undertaken after both courses are complete and consists of a complete web application: front- and back- end.
  • The web application counts for 60% of the course grade, in total.
  • The application is graded on functionality, user-friendliness, and robustness.

LITERATURE

  1. Aravind Shenoy, “Thinking in HTML”
  2. E.A. Meyer, E. Weyl, “CSS: The Definitive Guide: Visual Presentation for the Web”
  3. D. Crockford, “JavaScript: The Good Parts”
  4. D. Flannagan, “JavaScript: The Definitive Guide”
  5. https://www.typescriptlang.org/docs/home.html
  6. https://angular.io/docs

Curriculum of

Software Development Principles and Web Application Back-end Development

88 classes

GOAL

The course will introduce basic concepts and methodology of back-end design and development on a web application example using Java as the main programming language. The course will introduce basic principles and methodologies of software development on a Web application example using Java and JavaScript as the main programming languages.

TEACHING METHODOLOGY

The course centers around interactive lectures organized around the presentation of Web application backend programming techniques and current state of the art industry best practices in software development methodologies through presentations, question and answer sessions.

Lecture classes are followed wherever practical and as often as possible with practical exercises, exploring methods of solving real-world problems using modern software tools and methodologies.

LEARNING OUTCOMES

Upon completion, the student should be able to:

  • understand the principles of good back-end design and applicable design patterns, independently develop low-to-medium complexity back-end components, understand one possible Java framework for back-end development and competently use the relevant libraries and frameworks to produce modern web-based back-ends.
  • understand the principles of good software development and applicable software development methods, independently develop low-to-medium complexity web applications, understand agile software development methodology, and competently use the methodology to produce modern web application.

COURSE DESCRIPTION

Topic 1:   Web architecture and spring boot       (8)

  • Concepts, properties, and examples of modern web system architectures
  • Definition, properties, and examples of client-server architecture
  • Concepts and properties of the HTTP protocol
  • HTTP status codes
  • HTTP body and header
  • Concepts, properties, and advantages of the REST architecture
  • Concepts and properties of Spring
  • Spring application functional levels
  • Concepts and properties of Spring Boot
  • Maven – basic tutorial
  • Creating and configuring the first Spring project
  • PRACTICAL WORK – creating and configuring Spring projects

Topic 2:   REST services layer                                (8)

  • REST-related annotations and Spring concepts
  • Creating a basic CRUD REST controller in Spring
  • Advanced concepts of REST services in Spring: methods and parameters
  • Postman application – basic tutorial
  • Creating HTTP requests with Postman
  • Debugging in Eclipse IDE – basic tutorial
  • Breakpoints and line-by-line execution
  • PRACTICAL WORK – REST services

Topic 3: Data layer                                                (12)

  • Definition, properties, and examples of object-relational mapping
  • Concepts and properties of JPA and the Hibernate library
  • Using Hibernate in Spring applications
  • Main Hibernate annotations
  • Entity layer in Spring
  • Repository layer in Spring
  • PRACTICAL WORK – hibernate, entities and repositories

Topic 4:                     Project specification             (4)

  • Functional and nonfunctional requirements for the students’ project
  • Identifying and modeling main entities of the system under study
  • Discussion about the project scope and entities
  • PRACTICAL WORK – creation of class diagrams

Topic 5:   Service layer                                            (8)

  • Definition, properties, and examples of service layer in Spring
  • Services for database access
  • Transaction management
  • Using the entitymanager in spring
  • Writing queries with Hibernate Query Language (HQL)
  • Services for file access
  • Principles of logging in applications
  • Logging services
  • Using log4j library in Spring applications
  • PRACTICAL WORK – creation of services

Topic 6:   Serialization and Deserialization of data (10)

  • Concepts and properties of JavaScript Object Notation (JSON)
  • Concepts and properties of Jackson library
  • Using Jackson in Spring projects
  • Basic Jackson annotations for Serialization and Deserialization of data
  • The @JsonView annotation
  • @JsonManagedReference i @JsonBackReference annotations
  • Using Jackson in Spring applications
  • Data Transfer Objects (DTO)
  • PRACTICAL WORK – serialization and deserialization

Topic 7:   Testing the applications                         (8)

  • Concepts and examples of software testing
  • Concepts and examples of JUnit library
  • Testing REST applications
  • PRACTICAL WORK – JUnit tests

Topic 8:   Tools for managing software development projects           (6)

  • Concepts and examples of code version control systems
  • Concepts and properties of Git and Github
  • Using git in the command line
  • Basic operations on git repository
  • Using git in STS
  • Cloning an existing repository
  • Concepts and properties of Maven
  • Testing and packaging of standalone applications using Maven
  • PRACTICAL WORK – git, maven

Topic 9:   The process of connecting Frontend and  Backend application parts                                                                  (4)

  • Cloning an existing frontend project and its deployment
  • Connecting frontend (a partial black-box) and a backend application
  • Resolving frequent issues
  • Cross-Origin Resource Sharing (CORS)
  • Resolving CORS issues
  • PRACTICAL WORK – connecting front and back ends of an application

Topic 10: Security                                                  (12)

  • Definition, properties, and examples of security in computer systems
  • Creating login forms and implementing authorization and authentication procedures
  • Concepts and properties of HTTP Basic Auth
  • Concepts and properties of token authentication
  • PRACTICAL WORK – security mechanisms

Topic 11:              Project implementation             (8)

  • Discussing the main issues that arose during the project implementation
  • PRACTICAL WORK – finishing the project model
  • PRACTICAL WORK – finishing the backend implementation
  • PRACTICAL WORK – writing the documentation
  • PRACTICAL WORK – performing cleanup and fixing issues in the github repository

GRADING

  • Students’ grading will be undertaken after the

completion of the lectures

  • Students will have to pass a project worth 60 points

LITERATURE

  1. C. Bauer, G. King, and G. Gregory, Java Persistence with Hibernate, 2nd ed. New York, NY, USA: Manning, 2015.
  2. F. Gutierrez, Pro Spring Boot, 1st ed. New York, NY, USA: Apress, 2016.
  3. C. Walls, Spring in Action, 4th ed. New York, NY, USA: Manning, 2016.
  4. “Spring Tutorials.” [Online]. Available: http://spring.io/guides#tutorials.

 

 

 

 

Leave a Reply

Your email address will not be published. Required fields are marked *

Vojvodina ICT Cluster

Vojvodina ICT Cluster