Skip to content

Commit 2be5f4c

Browse files
committed
fix(advanced-prog): fix schedule
1 parent 794bc3a commit 2be5f4c

File tree

5 files changed

+202
-123
lines changed

5 files changed

+202
-123
lines changed

courses/advanced/README.md

+104-96
Original file line numberDiff line numberDiff line change
@@ -2,168 +2,176 @@
22

33
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.
44

5-
!!! warning
5+
## Requirements
66

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+
[![Bloom's Taxonomy](https://cdn.vanderbilt.edu/vu-wp0/wp-content/uploads/sites/59/2019/03/27124326/Blooms-Taxonomy-650x366.jpg){ 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>
820

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.
935

1036
## Schedule
1137

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:
1343

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 |
1757

1858

1959
<div class="grid cards" markdown>
2060

21-
- ### :beginner:{ .lg .middle } __Introduction__
61+
- ### :beginner:{ .lg .middle } __Review__
2262

2363
---
2464

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
2967

30-
- ### :robot:{ .lg .middle } __Structs and Classes__
68+
- ### :bar_chart:{ .lg .middle } __Introduction to OOP__
3169

3270
---
3371

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
3874

39-
- ### :material-grid:{ .lg .middle } __Pointers__
75+
- ### :material-code-array:{ .lg .middle } __More about OOP__
4076

4177
---
4278

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
4781

48-
- ### :octicons-number-16:{ .lg .middle } __Pointer operations__
82+
- ### :material-sort:{ .lg .middle } __Pointers__
4983

5084
---
5185

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
5688

57-
- ### :octicons-number-24:{ .lg .middle } __Pointers continued__
89+
- ### :material-call-split:{ .lg .middle } __Pointers continued__
5890

5991
---
6092

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
6595

66-
- ### :octicons-number-32:{ .lg .middle } __Operators / Review__
96+
- ### :hash:{ .lg .middle } __Operators and more__
6797

6898
---
6999

70-
- Week 6. 2023/10/02
100+
- Week 6. 2024/02/19
71101
- Topic: Operator overloading, type conversion operators, convert constructors, aggregation and composition, namespaces
72-
- Formal Assignment:
73-
- Interactive Assignment:
74102

75-
- ### :octicons-number-40:{ .lg .middle } __Midterms__
103+
- ### :warning:{ .lg .middle } __Midterms__
76104

77105
---
78106

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
83109

84-
- ### :octicons-number-48:{ .lg .middle } __Vectors and Arrays__
110+
- ### :octicons-stack-16:{ .lg .middle } _Vectors, Arrays & Linked Lists__
85111

86112
---
87113

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
92116

93-
- ### :octicons-number-56:{ .lg .middle } __Thanksgiving break__
117+
- ### :material-calendar-weekend:{ .lg .middle } __Break__
94118

95119
---
96-
97-
- Week 9. 2023/10/23
98-
- Topic: Thanksgiving Break - No Class
99-
- Formal Assignment:
100-
- Interactive Assignment:
101120

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__
103125

104126
---
105127

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
110130

111-
- ### :octicons-number-72:{ .lg .middle } __Inheritance continued__
131+
- ### :octicons-search-16:{ .lg .middle } __Override__
112132

113133
---
114134

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__
119139

120-
- ### :octicons-number-80:{ .lg .middle } __Exceptions__
140+
---
121141

122-
---
142+
- Week 12. 2024/04/01
143+
- Topic: inheritance hierarchies, polymorphism and virtual member functions, abstract base classes and pure virtual functions
123144

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__
128146

129-
- ### :octicons-number-88:{ .lg .middle } __Project introduction / Work sessions__
147+
---
130148

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
137151

138-
- ### :octicons-number-96:{ .lg .middle } __Project work__
152+
- ### :material-sort-clock-ascending:{ .lg .middle } __Stack and queue__
139153

140-
---
141-
142-
- Week 14. 2023/11/27
143-
- Topic: Project work
144-
- Formal Assignment:
145-
- Interactive Assignment:
154+
---
146155

147-
- ### :octicons-number-104:{ .lg .middle } __Project Presentations__
156+
- Week 14. 2024/04/15
157+
- Topic: Stack and queue
148158

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__
155160

156-
- ### :octicons-number-112:{ .lg .middle } __Finals__
161+
---
157162

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
164172

165173
</div>
166174

167-
175+
168176

169177

+78-19
Original file line numberDiff line numberDiff line change
@@ -1,35 +1,94 @@
1-
---
2-
template: reveal.html
3-
---
1+
# Data-Structures & Algorithms
42

5-
# Data Structures and Algorithms
3+
## Table of Contents
64

7-
hi!
5+
## Safe and welcoming space
86

9-
### From Reveal
7+
TLDR: Be nice to each other, and don't copy code from the internet.
108

11-
$$ \frac{1}{2} $$
9+
- [Code of Conduct](../../../CODE_OF_CONDUCT.md)
10+
- [Notes on Submissions and Plagiarism](../../../blog/posts/NotesOnSubmissions/NotesOnSubmissions.md)
1211

13-
---
12+
Some assignments can be hard, and you may feel tempted to copy code from the internet. **Don't do it**. You will only hurt yourself. You will learn nothing, and you will be caught. Once you get caught, you will be reported to the Dean of Students for academic dishonesty.
1413

15-
# Slide 2
14+
If you are struggling with an assignment, please contact me in my office-hours, or via discord. I am really slow at answering emails, so do it so only if something needs to be official. Quick questions are better asked in discord by me or your peers.
1615

17-
--
16+
## Privacy and FERPA Compliance
1817

19-
### Vertical
18+
!!! danger inline end "FERPA WAIVER"
2019

21-
TODO
20+
If you are willing to share your final project publicly, you MUST SIGN [this FERPA waiver](../../../blog/FerpaWaiver/FerpaWaiver.md).
2221

23-
---
22+
<iframe src="https://giphy.com/embed/e7yNPQmGUozyU" width="480" height="336" frameBorder="0" class="giphy-embed" allowFullScreen></iframe><p><a href="https://giphy.com/gifs/facebook-posts-privacy-e7yNPQmGUozyU">via GIPHY</a></p>
2423

25-
# Slide 3
24+
This class will use github extensively, in order to keep you safe, we will use private repositories. This means that only you and me will be able to see your code. In your final project, you must share it with your pair partner, and with me.
2625

27-
--
26+
## Activities
2827

29-
> Some stuff
28+
TLDR: there is no TLDR, read the whole thing.
3029

31-
---
30+
<iframe src="https://giphy.com/embed/H1dxi6xdh4NGQCZSvz" width="480" height="480" frameBorder="0" class="giphy-embed" allowFullScreen></iframe><p><a href="https://giphy.com/gifs/justviralnet-cat-hilarious-typing-H1dxi6xdh4NGQCZSvz">via GIPHY</a></p>
3231

33-
### A Slide containing an image.
32+
### Setup Github repository
3433

35-
---
34+
!!! note inline end "Gitkraken"
35+
36+
Optionally you might want to use GitKraken as your git user interface. Once you open it for the first time, signup using your github account with student pack associated.[:fontawesome-brands-gitkraken: Install Gitkraken](https://www.gitkraken.com/){ .md-button .md-button--primary }
37+
38+
1. Signup on github and apply for Github Student Pack. [:fontawesome-brands-github: Apply for Student Pack](https://education.github.com/pack){ .md-button .md-button--primary }
39+
2. Send me your github username in class, so I will share the assignment repository with you;
40+
3. Create a private repository by clicking "use as template" the repository [:material-source-repository: InfiniBrains/csi281](https://github.com/InfiniBrains/csi281) or [Create CSI281 repository](https://github.com/new?owner=InfiniBrains&template_name=csi281&template_owner=InfiniBrains&visibility=private){ .md-button .md-button--primary }
41+
4. Share your repository with me. Click on settings, then collaborators, and add me as a collaborator. My username: [@tolstenko](https://github.com/tolstenko)
42+
5. Clone your repository to your computer. You can use the command line, or any Git GUI tool. I recommend [:simple-gitkraken: GitKraken](https://www.gitkraken.com/){ .md-button .md-button--primary }
43+
44+
### Setup your IDE
45+
46+
!!! note inline end "Other IDEs"
47+
48+
Optionally you might want to use any other IDE, such as Visual Studio, VSCode, XCode, NeoVim or any other, but I will not be able to help you with that.
49+
50+
I will use CLion in class, and I recommend you to use it as well so you can follow the same steps as me. It is free for students. And it works on Windows, Mac and Linux.
51+
52+
1. Apply for student license for [:simple-jetbrains: JetBrains](https://www.jetbrains.com/student/) or [:material-form-select: Apply Form](https://www.jetbrains.com/shop/eform/students){ .md-button .md-button--primary }
53+
2. You can install [:simple-clion: CLion](https://www.jetbrains.com/clion/) only or install CLion via their [:material-toolbox: Install Toolbox](https://www.jetbrains.com/toolbox-app/){ .md-button .md-button--primary }
54+
3. Open CLion for the first time, and login with your JetBrains account you created earlier;
55+
56+
### Setup your Assignments project
57+
58+
!!! warning inline end "Common problems"
59+
60+
Your machine might not have git on your path. If so, install it from [git-scm.com](https://git-scm.com/) and make sure you tick the option to add git to your PATH.
61+
62+
1. Open your IDE, and click on "Open Project";
63+
2. Select the folder where you cloned your repository;
64+
3. Click on "Open as Project" or "Open as CMake Project";
65+
4. Wait for CMake to finish generating the project;
66+
5. On the top right corner, select the target you want to run/debug;
67+
68+
### Check Github Actions
69+
70+
!!! note inline end "Github Actions"
71+
72+
Github Actions is a CI/CD tool that will run your tests automatically when you push your code to github. It will also run your tests when you create a pull request. It is a great tool to make sure your code is always working.
73+
74+
You might want to explore the folder `.github/workflows` to see how it works, but you don't need to change anything there.
75+
76+
![tests-meme.png](tests-meme.png)
77+
78+
Every commit you push to your repository will be automatically tested through Github Actions. You can see the results of the tests by clicking on the "Actions" tab on your repository.
79+
80+
1. Go to your repository on github;
81+
2. Click on the "Actions" tab;
82+
3. Click on the "Build and Test" action;
83+
4. Click on the latest commit;
84+
5. On the jobs panel, Click on the assignment you want to see the results;
85+
6. Read the logs to see if your tests passed or failed;
86+
7. It is your job to read the README.md from every assignment and fulfill the requirements;
87+
8. You can run/debug the tests locally by targeting the assignmentXX_tests;
88+
89+
## Homework
90+
91+
<iframe src="https://giphy.com/embed/cFkiFMDg3iFoI" width="480" height="269" frameBorder="0" class="giphy-embed" allowFullScreen></iframe><p><a href="https://giphy.com/gifs/git-merge-cFkiFMDg3iFoI">via GIPHY</a></p>
92+
93+
1. Read the [Syllabus](../README.md) fully. Pay attention to the schedule, outcomes and grading;
94+
2. Do all assignments on Canvas, specially the git training;
Loading

0 commit comments

Comments
 (0)