Course Title: Programming II
Course Code: CS 121
Credit Value: 4 Credits
Contact Hours
Lectures: 2 hours/week
Practical / Laboratories: 2 hours/week
Duration: 15 Weeks (One Semester)
Prerequisite: Programming I
1. COURSE DESCRIPTION
This course builds upon the foundations established in Programming I and provides an in-depth study of object-oriented programming using Java. Students learn advanced programming concepts and techniques for developing modular, reusable, and maintainable software systems.
Topics include classes and objects, encapsulation, inheritance, polymorphism, abstract classes, interfaces, exception handling, recursion, generic programming, collections, and graphical user interface fundamentals. Laboratory exercises emphasize software design, debugging, testing, and the development of medium-sized applications using object-oriented principles.
The course prepares students for advanced courses in software engineering, data structures and algorithms, databases, and application development.
2. COURSE OBJECTIVES
By the end of this course, students should be able to:
Apply object-oriented programming principles to software development.
Design and implement classes and objects effectively.
Utilize inheritance, polymorphism, and interfaces in program design.
Handle program errors through exception handling mechanisms.
Develop recursive solutions to computational problems.
Use generic classes and Java collections for managing data.
Build simple event-driven graphical user interfaces.
Apply software testing and documentation techniques in program development.
3. LEARNING OUTCOMES
Upon successful completion, students will be able to:
Design software solutions using object-oriented principles.
Create classes and objects that promote modularity and code reuse.
Implement inheritance and polymorphism in Java applications.
Develop abstract classes and interfaces.
Handle exceptions and improve program robustness.
Apply recursion to solve computational problems.
Utilize generic programming and collection frameworks.
Develop simple graphical user interfaces and event-driven applications.
Test, debug, and document object-oriented programs.
Produce maintainable and reusable software components.