PGR203 Advanced Java
Welcome to this course in Advanced Java. In this course you will learn the skills necessary for backend programming with Java. You will learn about programming skills such as test-driven development, pair programming and continuous integration; you will learn about programming tools such as IntelliJ, Maven and Github and you will learn about technologies such as Sockets, HTTP, JDBC and PostgreSQL.
The class will be taught through live programming, exercises and assignments. This Github repository contains commit logs for the live programming lectures that you can follow along to complete the exercises.
Read the course companion materials
Lectures:
Lecture 1: Programming skills
This lecture covers pair programming, test-driven development and basic IntelliJ and Git usage.
Lecture 2: Programming tools
This lecture covers Maven, Github Actions and Github Issues
- Reference implementation - Johannes and Tien remote pair programming
- Issues resolved
- Live coding session
Lecture 3: Socket clients
This lecture covers java.net.Socket
and introduces the HTTP protocol and repeats GitHub Actions
Lecture 4: HTTP server
This lecture covers java.net.ServerSocket
and how to respond with a file to a web browser
Lecture 5: HTTP post
This lecture covers HTML forms and how they interact with the server
Lecture 6: Refactoring
This lectures dives into how to change your code to improve the structure while keeping it working, refactoring HttpServer and adding support for POST requests.
Lecture 7: Database access
This lecture covers java.sql.Connection
, java.sql.PreparedStatement
and java.sql.ResultSet
Lecture 8: Design patterns
This lecture covers the Data Access Object pattern and how handle database changes and separating the test database from the real database
Lecture 9: Backend design
This lecture covers how to structure the code on your server to integrate the HTTP server with JDBC-code
Lecture 10: The big picture
This lecture covers how to make the HTTP server work indendently and support new requirements through better organization of the code
Lecture 11: Programmer productivity
This lecture reviews how to work effectively with IntelliJ, Github and Maven, revising the contents of assignment #1
Lecture 12: The programming industry
This guest lecture covers how it is to work as a programmer in the Norwegian IT industry