- Programming Fundamentals (TKT10002)
- Advanced Programming Course (TKT10003)
- Database Fundamentals (TKT10004)
| Part | Themes | Competence Objectives |
|---|---|---|
| 1 | Introduction to how web applications work and the basic components of the internet | • Know the basics of how the Internet works • Familiar with concepts of URI, DNS, HTTP and HTML • Familiar with concepts of path and request parameter • Familiar with basic structure of GET and POST type requests at HTTP protocol level • Recognize parts of HTTP protocol response from server • Familiar with client-server model • Know how to implement a simple server and browser • Superficially familiar with Spring Boot application framework • Know how to create a web application that responds to requests |
| 2 | Views, databases and database abstractions | • Use Thymeleaf library to create pages for views • Send data to the server and process data sent to the server • Familiar with POST/Redirect/GET design pattern • Familiar with concept of ORM • Utilize database abstraction provided by Java and Spring Boot for data processing • Handle applications containing a single database table • Familiar with concept of path variable and use path variables in applications |
| 3 | Databases and database abstractions. References between database tables, filtering and organizing results | • Handle applications containing multiple database tables • Know how to define references between database tables • Know how to handle transactions programmatically • Familiar with N+1 query problem and methods to avoid it • Know how to organize and limit information retrieved from database |
| 4 | Media types and file storage. Software development process, layered architecture and automated application testing. Moving an application to the web | • Know concept of media type and how to handle files in database • Basic understanding of different stages of software development process • Know architectural patterns suitable for web applications • Understand layered architecture • Know how to divide parts of application into services • Write automatically executed tests for applications • Know how to transfer application to the network for public access |
| 5 | HTTP protocol and cookies. Authentication and authorization | • Familiar with concept of statelessness • Know what cookies are and their purpose • Familiar with essential legal issues related to cookies • Explain differences between authentication and authorization • Create application that asks user to log in • Define paths and methods that require logging in • Hide parts of view from different user groups |
| 6 | Repeating structures and fragments. Using style sheets. Validating inputs. Interfaces and REST | • Know methods for defining and reusing recurring page structures • Know what Twitter Bootstrap is and use it to define styles • Know methods for validating data and validate form data • Know concept of interface and REST interfaces • Implement service that provides data over REST-formatted interface |
| 7 | Browser software and server software. A little bit of security. Application scalability. Reactive programming | • Know how to make JavaScript request to server from browser • Update view displayed in browser based on JavaScript response • Know most typical vulnerabilities in web applications (OWASP) • Know methods for scaling applications for large user groups • Know basics of reactive programming • Create simple server software using reactive programming paradigm |