Course Overview
What you will learn
SENG 12233 Object-Oriented Programming is a compulsory 3-credit Year 1 course. It builds on SENG 11223 Programming Concepts and teaches you to design programs as collaborating objects, using Java.
Every lecture adds a feature to the same Library Management System (LMS). You meet each new idea twice: first in the lecture notes and slides, then in a weekly lab where you add it to your own copy of the project and commit it with Git.
12 Lectures · 9 Labs · 1 Midterm · 1 Final Project
Learning outcomes. After this course you can:
LO1 write Java programs using classes, objects and methods;
LO2 use Git to keep a project history and work on branches;
LO3 apply encapsulation, inheritance, polymorphism, abstraction, exceptions and generics;
LO4 build a graphical interface with Swing events and the MVC pattern;
LO5 store and retrieve data with JDBC.
Foundations of OOP
Lectures 01 – 05 · Classes, inheritance, abstraction and exceptions
Review & Midterm
Lectures 06 – 07 · Consolidate before the in-class midterm
Graphical Interfaces
Lectures 08 – 09 · Swing, events and the MVC pattern
Data, Persistence & Concurrency
Lectures 10 – 12 · Generics, streams, JDBC and threads
Weekly Labs
Lab sheets
Each lab sheet lists the goal, the steps, a checklist and what to submit. Work on a new Git branch named as shown, and open a pull request when you finish. Weeks 1, 6 and 7 have no lab sheet: Week 1 is the Git guide, Week 6 is review and Week 7 is the midterm.
Library Management System
Build it step by step
The LMS guide walks you through the whole system in nine illustrated steps, one per lab. Each step shows the class diagram, the code to write, the command to run and the output or screenshot you should see.
Stuck? Compare with the reference solution, which contains the finished code at the end of every week and the complete final project.
Git Support
Version control for your labs
The Git Support Guide takes you from installing Git to your first pull request, with the exact commands, a branch-per-week workflow, and fixes for the mistakes beginners meet most often.
Branch naming: one branch per lab, for example week2-encapsulation. Commit small and often, with messages that say what changed.
Rule of thumb: if the program works, commit it. If you are about to try something risky, commit first.
Assessments
How you are assessed
Weekly Labs · Individual
Lab pull requests
Each lab is marked on the checklist in its lab sheet, on working code and on a readable Git history.
40% of Final GradeMidterm · In class
Midterm examination
Reading code, predicting output, fixing errors and writing short classes. See the Midterm Briefing for the format and a sample.
25% of Final GradeFinal Project · Individual
LMS project and demo
Your finished Library Management System, a clean README, and a short demo in which you explain one design decision.
25% of Final GradeGit Practice
Version-control habits
Regular commits, meaningful messages and one branch per lab.
10% of Final GradeCourse Resources
Materials & references
LMS Guide
Nine illustrated steps that build the Library Management System
Git Support Guide
Commands, workflow and troubleshooting
Reference solution
Finished code for every week and the complete final project
Java 21 API
Official documentation for every class we use
dev.java Learn
Free tutorials from the Java team
Pro Git
The free Git book, for when you want more depth
About This Module
Module Information
SENG 12233 — Object-Oriented Programming is delivered by Eng. Dr. Tiroshan Madushanka, Software Engineering Teaching Unit, Faculty of Science, University of Kelaniya. It is a compulsory 3-credit course in Year 1.
Pre-requisite: SENG 11223 Programming Concepts.
Academic integrity: Lab and project work must be your own. You may discuss ideas with friends, but you must write and commit your own code.
Software to install: JDK 21, Git and an IDE such as IntelliJ IDEA or VS Code. For Week 11, the SQLite JDBC jar (instructions in Lab 8).
Contact: Please use the University LMS for submissions, announcements and questions.