Welcome to the Advanced Programming with Java Course Repository — a comprehensive, community-driven learning resource.
This project is more than a collection of materials — it's a living documentation of how our teaching team collaborates, mentors, and builds a hands-on learning experience for students.
Our mission is to ensure that every student not only understands Java and advanced programming concepts but can also apply them confidently through coding, problem-solving, and projects.
We believe that learning to code should be an active, guided process — not a passive one.
To achieve that, we combine theory from lectures with practice, mentorship, and structured documentation.
| Section | Description |
|---|---|
| /overview/ | Conceptual overviews for each lecture topic — theory summaries, examples, and key takeaways. |
| /workshops/ | Hands-on guided activities for each topic, designed to help students learn by doing. |
| /assignments/ | Weekly assignments that reinforce lecture material and build problem-solving skills. |
All sections are written in Markdown, making them easy to read, modify, and publish (e.g., on GitHub Pages or Quartz).
Our approach combines theoretical coverage, active practice, and close mentorship:
-
Weekly Lectures
- Delivered by the professor.
- Introduce core programming concepts in Java.
-
Workshops
- Designed and run by TAs.
- Translate concepts into hands-on coding experiences.
- Encourage collaboration and experimentation.
-
Assignments
- Weekly exercises that challenge students to apply what they've learned.
- Reviewed and discussed with mentors.
-
Mentorship
- Each TA mentors a small group of students.
- Provides personalized support, code reviews, and guidance.
- Builds a feedback loop between students, TAs, and the professor.
We're documenting everything we do for three major reasons:
-
Comprehensiveness for Learners
Provide a high-quality, public resource for current students and self-learners outside the university. -
Pedagogical Transparency
Allow educators and future TA teams to see and improve upon our structure, methods, and materials. -
Continuity and Growth
Leave behind a foundation that future teaching teams or other institutions can build upon, adapt, and evolve.
🏠 All course materials are organized under the Advanced-Programming-1404 GitHub Organization.
Each topic below links directly to its workshop and assignment repositories.
| Week | Topic | Description | Workshop Repository | Assignment Repository |
|---|---|---|---|---|
| 0 | Introduction to Java | Course orientation, JVM, Java ecosystem, IntelliJ IDEA, Maven & Gradle build tools. | — | — |
| 1 | Java & Git | Git installation, repository setup, basic workflow, GitHub/Gitea, and Java basics. | — | HW-02-git-and-java-practice |
| 2 | OOP – Encapsulation | Classes & objects, constructors, access modifiers, method types, encapsulation, mutability. | WS-02-intro-to-oop | HW-03-oop-and-api |
| 3 | OOP – Inheritance & Polymorphism | Inheritance, method overriding, polymorphism, abstract classes, interfaces, casting. | WS-03-advanced-oop | HW-04-JAVA-KNIGHT |
| 4 | OOP Review | OOP concepts review, Generics introduction, HTML/CSS (optional), Web scraping (bonus). | WS-04-oop-review | HW-5-IMDB-SCRAPER (bonus) |
| 5 | Exceptions & Files | Exception handling, checked vs unchecked exceptions, try-catch-throw, file I/O, CSV processing. | WS-05-exceptions-and-file-handling | HW-06-exceptions-and-file-handling |
| 6 | UI Introduction | JavaFX architecture, FXML, CSS styling, event handling, Scene Builder. | WS-06-intro-to-javafx | HW-07-JavaFX |
| 7 | Hashing & Multithreading | Hash functions, equals/hashCode contract, threads, Runnable, thread lifecycle. | WS-07-Multithreading-Basics-and-Hashing | HW-08-Basic-Multithreading |
| 8 | Advanced Multithreading | Race conditions, synchronization, locks, semaphores, thread pools, deadlock prevention. | WS-08-Advanced-Multithreading | HW-09-Advanced-Multithreading |
| 9 | Network | TCP/IP, sockets, client-server architecture, object serialization. | WS-09-Network | HW-10-Socket-Programming |
| 10 | Database (2 Sessions) | PostgreSQL, SQL (DDL, DML, DQL), JDBC, ORM concepts, database design. | WS-10-Database | — |
| 11 | Advanced Git | Branching strategies, merge conflicts, reset/revert, stash, collaboration workflows. | WS-11-Advanced-Git (bonus) | — |
| 12 | Final Project | Project overview, requirements, planning, team formation. | — | — |
- Create a sustainable, evolving educational model that balances theory and practice.
- Encourage open-source education — anyone can learn from or contribute to our materials.
- Serve as a baseline for future educators in teaching programming effectively.
- Professor: Dr. Saeed Reza Kheradpisheh
- Head Teaching Assistant: Mehrdad Shirvani
- Teaching Assistants (Alphabetical by Last Name):
We welcome contributions — whether you're a TA, a student, or an educator from another institution.
If you'd like to:
- Improve explanations or examples
- Add new workshop exercises
- Suggest assignment ideas
- Translate materials
Please open a pull request or contact us.
- Java JDK 21+ — Primary programming language
- IntelliJ IDEA — Recommended IDE
- Maven / Gradle — Build tools and dependency management
- JavaFX — GUI library for desktop applications
- PostgreSQL — Database management
- Git / GitHub — Version control and collaboration
- Markdown — Documentation
- GitHub Pages / Quartz — For deploying the website
All materials are shared under the Creative Commons Attribution-NonCommercial-ShareAlike (CC BY-NC-SA) license.
You're free to learn, adapt, and build upon our content — just credit the authors and share alike.
— Java AP SBU CS TA Team, 2026
