This course consists mainly of two parts: Part I: OOP Concepts, and Part II: Data Structures
In the first part of this course, we’ll be learning how to solve problems based on the OOP paradigm, how to create classes, instantiate and use objects, how to use inheritance and abstraction to better organize our code, as well as how to handle exceptions. We’ll be also learning fundamental concepts in OOP including encapsulation, inheritance, polymorphism, abstraction, and generics.
In the second part, we are going to study how to evaluate the efficiency of algorithms at the design level using asymptotic complexity analyses. We’ll also provide different implementations for the abstract data types (ADT) of the commonly used linear data structures (including their design, and analysis). This course also introduces recursion and provides the implementation details of the well-known sorting algorithms.
Note that all the programs studied in CS300 are implemented using the Java programming language.