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¶
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¶
-
Introduction to OOP¶
- Week 2. 2024/01/22
- Topic: Introduction to OOP Objects, classes, member functions, constructors, destructors
-
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