|
2 | 2 |
|
3 | 3 | 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.
|
4 | 4 |
|
5 |
| -!!! warning |
| 5 | +## Requirements |
6 | 6 |
|
7 |
| - 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. |
| 7 | +- [Introduction to Programming](../intro/README.md) |
| 8 | +- [Advanced Programming](../advanced/README.md) |
| 9 | + |
| 10 | +### Textbook |
| 11 | + |
| 12 | +- C++ Early Objects, 10th Edition, Gaddis, Walters, Muganda, Pearson, 2019. ISBN 978-0135235003 |
| 13 | + |
| 14 | +## Student-centered Learning Outcomes |
| 15 | + |
| 16 | +<figure markdown> |
| 17 | + [{ loading=lazy width="600" }](https://cft.vanderbilt.edu/guides-sub-pages/blooms-taxonomy/) |
| 18 | + <figcaption><a href="https://cft.vanderbilt.edu/guides-sub-pages/blooms-taxonomy/">Bloom's Taxonomy on Learning Outcomes</a></figcaption> |
| 19 | +</figure> |
8 | 20 |
|
| 21 | +Upon completion of the Advanced Programming course in C++, students should be able to: |
| 22 | + |
| 23 | +- **Articulate** key concepts of Object-Oriented Programming (OOP), including objects, classes, encapsulation, abstraction, modularity, inheritance, and polymorphism. |
| 24 | +- **Exhibit** a comprehensive **understanding** of the OOP paradigm and its fundamental principles. |
| 25 | +- **Differentiate** between various structures (arrays, structs, classes, and linked lists) and proficiently apply them in modeling complex information. |
| 26 | +- **Apply** OOP principles effectively to design and implement solutions for real-world problems. |
| 27 | +- **Utilize** Pointers and Dynamic Memory Allocation. |
| 28 | +- Effectively **employ** pointers and dynamic memory allocation in C++ programming. |
| 29 | +- **Analyze** and **evaluate** competing alternatives for implementation options when solving programming problems. |
| 30 | +Break down complex problems into manageable components using OOP concepts. |
| 31 | +- **Evaluate** the effectiveness of different implementation strategies in addressing programming challenges. |
| 32 | +- Critically **assess** the advantages and disadvantages of using structures like arrays, structs, classes, and linked lists in specific scenarios. |
| 33 | +- **Develop** solutions for programming challenges by integrating and synthesizing various OOP principles. |
| 34 | +- **Implement** advanced programming concepts, such as overloading and overriding, to enhance code functionality. |
9 | 35 |
|
10 | 36 | ## Schedule
|
11 | 37 |
|
12 |
| -Relevant dates for the Fall 2023 semester: |
| 38 | +!!! warning |
| 39 | + |
| 40 | + 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. |
| 41 | + |
| 42 | +College dates for the Spring 2024 semester: |
13 | 43 |
|
14 |
| -- 09-13 Oct 2023 - Midterms Week |
15 |
| -- 20-24 Nov 2023 - Thanksgiving Break |
16 |
| -- 11-15 Dec 2023 - Finals Week |
| 44 | +| Date | Event | |
| 45 | +|---------------------|------------------------------------| |
| 46 | +| Jan 16 | Classes Begin | |
| 47 | +| Jan 16 - 22 | Add/Drop | |
| 48 | +| Feb 26 - March 1 | Midterms | |
| 49 | +| March 11 - March 15 | Spring Break | |
| 50 | +| March 25 - April 5 | Registration for Fall Classes | |
| 51 | +| April 5 | Last Day to Withdraw | |
| 52 | +| April 8 - 19 | Idea Evaluation | |
| 53 | +| April 12 | No Classes - College remains open | |
| 54 | +| April 26 | Last Day of Classes | |
| 55 | +| April 29 - May 3 | Finals | |
| 56 | +| May 11 | Commencement | |
17 | 57 |
|
18 | 58 |
|
19 | 59 | <div class="grid cards" markdown>
|
20 | 60 |
|
21 |
| -- ### :beginner:{ .lg .middle } __Introduction__ |
| 61 | +- ### :beginner:{ .lg .middle } __Review__ |
22 | 62 |
|
23 | 63 | ---
|
24 | 64 |
|
25 |
| - - Week 1. 2023/08/28 |
26 |
| - - Topic: Introduction and tooling |
27 |
| - - Formal Assignment: |
28 |
| - - Interactive Assignment: |
| 65 | + - Week 1. 2024/01/15 |
| 66 | + - Topic: Review: variables, decision making, iteration, functions, strings, and arrays. Structs and 2D arrays |
29 | 67 |
|
30 |
| -- ### :robot:{ .lg .middle } __Structs and Classes__ |
| 68 | +- ### :bar_chart:{ .lg .middle } __Introduction to OOP__ |
31 | 69 |
|
32 | 70 | ---
|
33 | 71 |
|
34 |
| - - Week 2. 2023/09/04 |
35 |
| - - Topic: Stcucts and Classes. Objects, classes, member functions, constructors, destructors. |
36 |
| - - Formal Assignment: |
37 |
| - - Interactive Assignment: |
| 72 | + - Week 2. 2024/01/22 |
| 73 | + - Topic: Introduction to OOP Objects, classes, member functions, constructors, destructors |
38 | 74 |
|
39 |
| -- ### :material-grid:{ .lg .middle } __Pointers__ |
| 75 | +- ### :material-code-array:{ .lg .middle } __More about OOP__ |
40 | 76 |
|
41 | 77 | ---
|
42 | 78 |
|
43 |
| - - Week 3. 2023/09/11 |
44 |
| - - Topic: More about OOP. Private member functions, object passing, object composition, structs and unions |
45 |
| - - Formal Assignment: |
46 |
| - - Interactive Assignment: |
| 79 | + - Week 3. 2024/01/29 |
| 80 | + - Topic: Private member functions, object passing, object composition, structs and unions |
47 | 81 |
|
48 |
| -- ### :octicons-number-16:{ .lg .middle } __Pointer operations__ |
| 82 | +- ### :material-sort:{ .lg .middle } __Pointers__ |
49 | 83 |
|
50 | 84 | ---
|
51 | 85 |
|
52 |
| - - Week 4. 2023/09/18 |
53 |
| - - Topic: Pointers - address operator, pointer variables, arrays and pointers, pointer math, pointers as function parameters and return types, dynamic memory allocation |
54 |
| - - Formal Assignment: |
55 |
| - - Interactive Assignment: |
| 86 | + - Week 4. 2024/02/05 |
| 87 | + - Topic: Address operator, pointer variables, arrays and pointers, pointer math, pointers as function parameters and return types, dynamic memory allocation |
56 | 88 |
|
57 |
| -- ### :octicons-number-24:{ .lg .middle } __Pointers continued__ |
| 89 | +- ### :material-call-split:{ .lg .middle } __Pointers continued__ |
58 | 90 |
|
59 | 91 | ---
|
60 | 92 |
|
61 |
| - - Week 5. 2023/09/25 |
62 |
| - - Topic: Pointers continued, this pointer, constant member functions, static members, friends, member-wise assignment, copy constructors |
63 |
| - - Formal Assignment: |
64 |
| - - Interactive Assignment: |
| 93 | + - Week 5. 2024/02/12 |
| 94 | + - Topic: this pointer, constant member functions, static members, friends, member-wise assignment, copy constructors |
65 | 95 |
|
66 |
| -- ### :octicons-number-32:{ .lg .middle } __Operators / Review__ |
| 96 | +- ### :hash:{ .lg .middle } __Operators and more__ |
67 | 97 |
|
68 | 98 | ---
|
69 | 99 |
|
70 |
| - - Week 6. 2023/10/02 |
| 100 | + - Week 6. 2024/02/19 |
71 | 101 | - Topic: Operator overloading, type conversion operators, convert constructors, aggregation and composition, namespaces
|
72 |
| - - Formal Assignment: |
73 |
| - - Interactive Assignment: |
74 | 102 |
|
75 |
| -- ### :octicons-number-40:{ .lg .middle } __Midterms__ |
| 103 | +- ### :warning:{ .lg .middle } __Midterms__ |
76 | 104 |
|
77 | 105 | ---
|
78 | 106 |
|
79 |
| - - Week 7. 2023/10/09 |
80 |
| - - Topic: Midterms / Review |
81 |
| - - Formal Assignment: |
82 |
| - - Interactive Assignment: |
| 107 | + - Week 7. 2024/02/26 |
| 108 | + - Topic: Midterms |
83 | 109 |
|
84 |
| -- ### :octicons-number-48:{ .lg .middle } __Vectors and Arrays__ |
| 110 | +- ### :octicons-stack-16:{ .lg .middle } _Vectors, Arrays & Linked Lists__ |
85 | 111 |
|
86 | 112 | ---
|
87 | 113 |
|
88 |
| - - Week 8. 2023/10/16 |
89 |
| - - Topic: Vectors and arrays of objects. Linked lists, linked list operations |
90 |
| - - Formal Assignment: |
91 |
| - - Interactive Assignment: |
| 114 | + - Week 8. 2024/03/04 |
| 115 | + - Topic: Vectors and arrays of objects: Linked lists, linked list operations |
92 | 116 |
|
93 |
| -- ### :octicons-number-56:{ .lg .middle } __Thanksgiving break__ |
| 117 | +- ### :material-calendar-weekend:{ .lg .middle } __Break__ |
94 | 118 |
|
95 | 119 | ---
|
96 |
| - |
97 |
| - - Week 9. 2023/10/23 |
98 |
| - - Topic: Thanksgiving Break - No Class |
99 |
| - - Formal Assignment: |
100 |
| - - Interactive Assignment: |
101 | 120 |
|
102 |
| -- ### :octicons-number-64:{ .lg .middle } __Inheritance__ |
| 121 | + - Week 09. 2024/03/11 |
| 122 | + - Topic: Spring BREAK. No classes this week. |
| 123 | + |
| 124 | +- ### :fontawesome-solid-circle-nodes:{ .lg .middle } __Inheritance__ |
103 | 125 |
|
104 | 126 | ---
|
105 | 127 |
|
106 |
| - - Week 10. 2023/10/30 |
107 |
| - - Topic: Inheritance, protected members, constructors/destructors |
108 |
| - - Formal Assignment: |
109 |
| - - Interactive Assignment: |
| 128 | + - Week 10. 2024/03/18 |
| 129 | + - Topic: inheritance, protected members, constructors/destructors |
110 | 130 |
|
111 |
| -- ### :octicons-number-72:{ .lg .middle } __Inheritance continued__ |
| 131 | +- ### :octicons-search-16:{ .lg .middle } __Override__ |
112 | 132 |
|
113 | 133 | ---
|
114 | 134 |
|
115 |
| - - Week 11. 2023/11/06 |
116 |
| - - Topic: Inheritance hierarchies, polymorphism and virtual member functions, abstract base classes and pure virtual functions |
117 |
| - - Formal Assignment: |
118 |
| - - Interactive Assignment: |
| 135 | + - Week 11. 2024/03/25 |
| 136 | + - Topic: inheritance, overriding base class functions |
| 137 | + |
| 138 | +- ### :octicons-search-16:{ .lg .middle } __Polymorphism__ |
119 | 139 |
|
120 |
| -- ### :octicons-number-80:{ .lg .middle } __Exceptions__ |
| 140 | + --- |
121 | 141 |
|
122 |
| - --- |
| 142 | + - Week 12. 2024/04/01 |
| 143 | + - Topic: inheritance hierarchies, polymorphism and virtual member functions, abstract base classes and pure virtual functions |
123 | 144 |
|
124 |
| - - Week 12. 2023/11/13 |
125 |
| - - Topic: Exceptions, macros, function and class templates, STL and STL containers, iterators |
126 |
| - - Formal Assignment: |
127 |
| - - Interactive Assignment: |
| 145 | +- ### :fontawesome-solid-arrows-split-up-and-left:{ .lg .middle } __Exceptions, Templates and STL__ |
128 | 146 |
|
129 |
| -- ### :octicons-number-88:{ .lg .middle } __Project introduction / Work sessions__ |
| 147 | + --- |
130 | 148 |
|
131 |
| - --- |
132 |
| - |
133 |
| - - Week 13. 2023/11/20 |
134 |
| - - Topic: Project introduction. (Extra): Stack and Queue |
135 |
| - - Formal Assignment: |
136 |
| - - Interactive Assignment: |
| 149 | + - Week 13. 2024/04/08 |
| 150 | + - Topic: Exceptions, function and class templates, STL and STL containers, iterators |
137 | 151 |
|
138 |
| -- ### :octicons-number-96:{ .lg .middle } __Project work__ |
| 152 | +- ### :material-sort-clock-ascending:{ .lg .middle } __Stack and queue__ |
139 | 153 |
|
140 |
| - --- |
141 |
| - |
142 |
| - - Week 14. 2023/11/27 |
143 |
| - - Topic: Project work |
144 |
| - - Formal Assignment: |
145 |
| - - Interactive Assignment: |
| 154 | + --- |
146 | 155 |
|
147 |
| -- ### :octicons-number-104:{ .lg .middle } __Project Presentations__ |
| 156 | + - Week 14. 2024/04/15 |
| 157 | + - Topic: Stack and queue |
148 | 158 |
|
149 |
| - --- |
150 |
| - |
151 |
| - - Week 15. 2023/12/04 |
152 |
| - - Topic: Project work |
153 |
| - - Formal Assignment: |
154 |
| - - Interactive Assignment: |
| 159 | +- ### :material-presentation::factory_worker:{ .lg .middle } __Project Presentation__ |
155 | 160 |
|
156 |
| -- ### :octicons-number-112:{ .lg .middle } __Finals__ |
| 161 | + --- |
157 | 162 |
|
158 |
| - --- |
159 |
| - |
160 |
| - - Week 16. 2023/12/11 |
161 |
| - - Topic: Finals |
162 |
| - - Formal Assignment: |
163 |
| - - Interactive Assignment: |
| 163 | + - Week 15. 2024/04/22 |
| 164 | + - Topic: Work sessions for final project |
| 165 | + |
| 166 | +- ### :warning:{ .lg .middle } __Finals__ |
| 167 | + |
| 168 | + --- |
| 169 | + |
| 170 | + - Week 16. 2024/04/29 |
| 171 | + - Topic: Finals Week |
164 | 172 |
|
165 | 173 | </div>
|
166 | 174 |
|
167 |
| - |
| 175 | + |
168 | 176 |
|
169 | 177 |
|
0 commit comments