CSC 211 - Course Outline
CSC 211 - Course Outline
• Basic concepts of OOP: Understanding objects, classes, encapsulation, abstraction, inheritance, and
polymorphism.
• Java platform overview: Introduction to Java’s architecture, JVM (Java Virtual Machine), and JDK (Java
Development Kit).
• Class structure: Defining classes, creating objects, using constructors, and initializing object states.
• Object lifecycle: Understanding object creation, memory allocation, and garbage collection in Java.
• Primitive data types: Understanding Java's basic types (int, char, float, double, boolean, etc.).
• Reference data types: Arrays, strings, and objects.
• Variable declarations: Local vs. instance variables, scope, and lifetime of variables.
• Expressions and operators: Arithmetic, relational, logical, and assignment operators in Java.
5. Inheritance
• Basic inheritance: Extending classes, method overriding, and the super keyword.
• Abstract classes and interfaces: Defining abstract classes and implementing interfaces for multiple
inheritances.
• Composition vs inheritance: Understanding when to use each and the implications in design.
7. Iteration Protocols
• Loops and control flow: Mastery of for, while, do-while loops, and enhanced for-loops in Java.
• Iterators: Using iterators for traversing data structures, especially with collection classes.
• Streams API (optional): Introduction to Java 8 Streams API for working with sequences of elements and
performing operations.
8. Using APIs: Class Libraries and Packages for Graphics and GUI Applications
• Java Standard Library: Using core Java packages like java.util, java.lang, java.io, and java.math.
• Graphics and GUI programming: Basics of Swing and AWT for building graphical user interfaces (GUI).
• Event-driven programming: Handling user input through listeners and event handlers.
9. Object-Oriented Design
• Principles of OOP design: SOLID principles (Single responsibility, Open-closed, Liskov substitution,
Interface segregation, Dependency inversion).
• Encapsulation and modular design: Designing modular and reusable code using OOP concepts.
• Designing with classes and objects: Best practices for defining interactions between objects.
• Design principles: Coupling and cohesion, separation of concerns, and code reusability.
• UML diagrams: Basic understanding of class diagrams, sequence diagrams, and use case diagrams in the
design phase.
• Modularization: Structuring code into manageable components for clarity and maintainability.
• Overview of design patterns: Importance and use of design patterns in software development.
• Creational patterns: Singleton, Factory, Builder.
• Structural patterns: Adapter, Decorator, Composite.
• Behavioral patterns: Observer, Strategy, Command.
• Software testing fundamentals: Writing unit tests for classes and methods.
• JUnit framework: Introduction to JUnit for automated testing of Java code.
• Test-driven development (TDD): Building software by writing tests first and then writing the code to pass
those tests.
• Software risks: Identifying risks in software development, such as security vulnerabilities, performance
bottlenecks, and scalability.
• Legal and ethical liabilities: Discussing intellectual property, privacy concerns, and ethical considerations
in software design.
• Agile methodologies: Overview of Agile software development, Scrum, and iterative design.
• Version control with Git: Using Git for managing code, branches, and collaboration.
• Refactoring: Techniques for improving existing code without changing its functionality.