- University: Salahaddin University-Erbil
- Department: Software Engineering Dept.
- My Status: Lecturer
- Level: BSc
- Year: 2019-Current
Course Description
This course provides an in-depth exploration of advanced programming concepts and techniques using Java as the primary language. Students will learn sophisticated programming features and tools essential for professional software engineering, including functional programming, design patterns, and clean code principles.
The curriculum covers advanced Java features such as collections, multithreading, networking, and database connectivity, as well as modern software development practices including testing, build automation, and graphical user interface development. Students will gain practical experience in applying design patterns and clean code principles to create maintainable, scalable software solutions.
Through hands-on projects and real-world applications, students will develop the advanced programming skills necessary for professional software development careers.
Prerequisites
- Object-Oriented Programming fundamentals
- Java programming basics
- Data Structures and Algorithms
- Software Engineering principles
- Database fundamentals (recommended)
Course Objectives
Upon completion of this course, students will be able to:
- Apply advanced Java programming concepts and features effectively.
- Implement functional programming paradigms in Java applications.
- Design and implement multithreaded applications with proper synchronization.
- Create database-connected applications using JDBC and modern persistence frameworks.
- Develop network applications using Java networking APIs.
- Apply design patterns and clean code principles in software development.
- Implement comprehensive testing strategies using JUnit and testing frameworks.
- Create graphical user interfaces using Java Swing and modern UI frameworks.
Course Outline
Week 1: Advanced Object-Oriented Programming Review
- OOP principles and advanced concepts
- Inheritance hierarchies and polymorphism
- Abstract classes and interfaces
- Exception handling and error management
- Advanced encapsulation and access control
- Lab: Advanced OOP concepts and design patterns
Week 2: Java Functional Programming
- Lambda expressions and functional interfaces
- Stream API and functional operations
- Method references and constructor references
- Optional class and null safety
- Lab: Functional programming implementation
Week 3: Java Collections Framework
- Collection interfaces and implementations
- List, Set, and Map data structures
- Collection algorithms and utilities
- Custom collections and iterators
- Lab: Collections framework and data structures
- Byte and character streams
- File I/O operations and management
- Serialization and deserialization
- NIO (New I/O) and buffer management
- Lab: File I/O and serialization exercises
Week 5: Multithreading and Concurrency
- Thread creation and lifecycle management
- Synchronization mechanisms and locks
- Concurrent collections and utilities
- Thread pools and executor framework
- Lab: Multithreaded application development
Week 6: Database Connectivity and Persistence
- JDBC fundamentals and connection management
- SQL operations and prepared statements
- Transaction management and ACID properties
- Connection pooling and performance optimization
- Lab: Database connectivity and CRUD operations
Week 7: Midterm Exam and Review
- Midterm Exam: Covers weeks 1-6 material
- Review of advanced Java concepts
- Programming practice and problem solving
- Lab: Exam review and practice problems
Week 8: Java Networking
- Socket programming and network communication
- HTTP client and server implementation
- URL handling and network utilities
- Network security and encryption
- Lab: Network application development
Week 9: Java Annotations and Reflection
- Annotation types and custom annotations
- Reflection API and dynamic programming
- Runtime type information and introspection
- Annotation processing and code generation
- Lab: Reflection and annotation processing
Week 10: Build Automation and Dependency Management
- Maven project structure and lifecycle
- Dependency management and repositories
- Build configuration and plugins
- Continuous integration and deployment
- Lab: Maven project setup and build automation
Week 11: Testing and Quality Assurance
- Unit testing with JUnit framework
- Test-driven development (TDD) practices
- Mocking and test doubles
- Integration testing and test automation
- Lab: Comprehensive testing implementation
Week 12: Design Patterns and Clean Code
- Creational, structural, and behavioral patterns
- SOLID principles and clean architecture
- Code refactoring and improvement techniques
- Design pattern implementation in Java
- Lab: Design pattern implementation and code refactoring
Week 13: Graphical User Interface Development
- Swing framework and component hierarchy
- Event handling and user interaction
- Layout managers and container organization
- Custom components and rendering
- Lab: GUI application development
Week 14: Final Exam Preparation and Review
- Comprehensive review of all course material
- Practice problems and sample questions
- Final Exam: Theoretical component
- Lab: Final exam practice and preparation
Week 15: Final Project and Course Wrap-up
- Final Exam: Practical Java programming project
- Course evaluation and feedback
- Future learning paths and advanced topics
- Lab: Final project presentation and evaluation
Textbooks
- [Recommended] “Effective Java” by Joshua Bloch
- [Optional] “Clean Code: A Handbook of Agile Software Craftsmanship” by Robert C. Martin
Assessment
- Programming Projects (30%)
- Design Pattern Implementation (20%)
- Testing and Quality Assurance (20%)
- Midterm Exam (15%)
- Final Exam (15%)