Skip to content

Advanced Programming

Estimated time to read: 9 minutes

This course builds on the content from Introduction to Programming. Students study the Object Oriented Programming (OOP) Paradigm with topics such as objects, classes, encapsulation, abstraction, modularity, inheritance, and polymorphism. Students examine and use structures such as arrays, structs, classes, and linked lists to model complex information. Pointers and dynamic memory allocation are covered, as well as principles such as overloading and overriding. Students work to solve problems by selecting implementation options from competing alternatives.

Requirements

Textbook

  • C++ Early Objects, 10th Edition, Gaddis, Walters, Muganda, Pearson, 2019. ISBN 978-0135235003

Student-centered Learning Outcomes

Bloom's Taxonomy

Bloom's Taxonomy on Learning Outcomes

Upon completion of the Advanced Programming course in C++, students should be able to:

  • Articulate key concepts of Object-Oriented Programming (OOP), including objects, classes, encapsulation, abstraction, modularity, inheritance, and polymorphism.
  • Exhibit a comprehensive understanding of the OOP paradigm and its fundamental principles.
  • Differentiate between various structures (arrays, structs, classes, and linked lists) and proficiently apply them in modeling complex information.
  • Apply OOP principles effectively to design and implement solutions for real-world problems.
  • Utilize Pointers and Dynamic Memory Allocation.
  • Effectively employ pointers and dynamic memory allocation in C++ programming.
  • Analyze and evaluate competing alternatives for implementation options when solving programming problems. Break down complex problems into manageable components using OOP concepts.
  • Evaluate the effectiveness of different implementation strategies in addressing programming challenges.
  • Critically assess the advantages and disadvantages of using structures like arrays, structs, classes, and linked lists in specific scenarios.
  • Develop solutions for programming challenges by integrating and synthesizing various OOP principles.
  • Implement advanced programming concepts, such as overloading and overriding, to enhance code functionality.

Schedule

Warning

This is a work in progress, and the schedule is subject to change. Every change will be communicated in class. Use the github repo as the source of truth for the schedule and materials. The materials provided in canvas are just a copy for archiving purposes and might be outdated.

College dates for the Spring 2024 semester:

Date Event
Jan 16 Classes Begin
Jan 16 - 22 Add/Drop
Feb 26 - March 1 Midterms
March 11 - March 15 Spring Break
March 25 - April 5 Registration for Fall Classes
April 5 Last Day to Withdraw
April 8 - 19 Idea Evaluation
April 12 No Classes - College remains open
April 26 Last Day of Classes
April 29 - May 3 Finals
May 11 Commencement
  • 🔰 Review


    • Week 1. 2024/01/15
    • Topic:
      • Review: variables, decision making, iteration, functions, strings, and arrays. Structs and 2D arrays
      • Setup: Github, CLion, Github Actions
  • 📊 Introduction to OOP


  • More about OOP


    • Week 3. 2024/01/29
    • Topic: Private member functions, object passing, object composition, structs and unions
  • Pointers


    • Week 4. 2024/02/05
    • Topic: Address operator, pointer variables, arrays and pointers, pointer math, pointers as function parameters and return types, dynamic memory allocation
  • Pointers continued


    • Week 5. 2024/02/12
    • Topic: this pointer, constant member functions, static members, friends, member-wise assignment, copy constructors
  • #⃣ Operators and more


    • Week 6. 2024/02/19
    • Topic: Operator overloading, type conversion operators, convert constructors, aggregation and composition, namespaces
  • ⚠ Midterms


    • Week 7. 2024/02/26
    • Topic: Midterms
  • Vectors, Arrays & Linked Lists_


    • Week 8. 2024/03/04
    • Topic: Vectors and arrays of objects: Linked lists, linked list operations
  • Break


    • Week 09. 2024/03/11
    • Topic: Spring BREAK. No classes this week.
  • Inheritance


    • Week 10. 2024/03/18
    • Topic: inheritance, protected members, constructors/destructors
  • Override


    • Week 11. 2024/03/25
    • Topic: inheritance, overriding base class functions
  • Polymorphism


    • Week 12. 2024/04/01
    • Topic: inheritance hierarchies, polymorphism and virtual member functions, abstract base classes and pure virtual functions
  • Exceptions, Templates and STL


    • Week 13. 2024/04/08
    • Topic: Exceptions, function and class templates, STL and STL containers, iterators
  • Stack and queue


    • Week 14. 2024/04/15
    • Topic: Stack and queue
  • 🧑‍🏭 Project Presentation


    • Week 15. 2024/04/22
    • Topic: Work sessions for final project
  • ⚠ Finals


    • Week 16. 2024/04/29
    • Topic: Finals Week