AERSP 424 Fall23 - Adv Computer Progr
AERSP 424 Fall23 - Adv Computer Progr
AERSP 424 Fall23 - Adv Computer Progr
Instructor Information:
Office Hours: T/Th 10:30-11:30 AM or if the door sign says I'm available.
Office Hours: M/W 4:40 PM - 6:40 PM at Sackett 118 (except Sept. 25 & 27, which will be at Hosler 218)
Course Description
This course will begin to train you to write professional-grade software. Writing good software is a critical skill for aspiring engineers. Good software is
maintainable, dependable, efficient, and usable while also meeting predefined specifications. This course focuses on development in C++ because this
language is the most commonly used language throughout most engineering disciplines. In fact, many aerospace engineer jobs require C and/or C++
programming skills. Moreover, typically once one knows how to write software in C or C++ use of most other languages is easy.
Our goals for this course are two-fold. First, we intend to imbue students with the knowledge and experience to write their own C++ software. By the end of
this course, everyone should be able to write software in C++. Furthermore, students should be able to write maintainable, efficient, dependable, and usable
software. Our second goal is to begin to develop the skills that will allow students to design, evaluate, and develop large software systems. The Linux
operating system, for example, is 15 million lines of code. As future engineers, you will need to work with, add to, and maintain large software bases. This
course will begin to develop the skills that will allow you to work with larger software systems. To arrive at these goals it will be critical for you to practice
writing software. We will code both during class periods, homework, and as part of a larger project.
This course can be used towards the completion of the requirements for the Graduate Minor in Computational Science as well as for the Undergraduate
Minor in IST for Aerospace Engineering. If you already have significant experience writing C++ software then this course may not be for you. You may want
to consider taking CMPSC 450, CSE 557, or NucE 530 instead of this course.
Prerequisite
CMPSC121 or CMPSC131 or CMPSC200 or CMPSC201 (strongly recommend at least one of these); MATH 220 (not really...)
Learning Outcomes
By the end of this course students will be able to:
Reference
cppreference.com (https://en.cppreference.com/w/)
https://leetcode.com/problemset/all/ (https://leetcode.com/problemset/all/)
Course Structure
During most class periods we will code together as we explore the topics below.
Homework will be posted to CANVAS. Your homework must compile in order for you to receive credit.
Class begins promptly at the class start time. Some class periods will begin with quizzes or code writing. If you miss a quiz then you won't get credit for it.
Also, try not to miss class. Each class will build on the previous class.
Students are asked to be respectful with respect to the use of phones during class.
Assessments
Writing software is the best way to learn how to write software. Therefore, homework will be given out weekly. In-class participation will test your
understanding of the material. A final project will round out the course assessments. There are no exams for this course.
Course
Score Range
Grade
A 90-100
A- 85-89
B+ 80-84
B 75-79
B- 70-74
C+ 65-69
C 60-64
D 50-59
F 0-49
I will only consider moving you to the next highest grade if you are 0.5 below the next grade.
Late Policy:
A penalty of 10% per day will be applied for all late assignments submitted without prior communication with professors. In the event that the nature of the
circumstances resulting in late submissions makes prior communication difficult or impossible (unforeseen life events, extreme illness, etc.), the late penalty
may be waived at the discretion of the professors.
Preliminary Schedule
Week Topic(s) Note
Week 1 (8/22 & 8/24) Introduction (Syllabus; Hello World!; Compiler; etc.)
Week 2 (8/29 & 8/31) Linux & Git (OS, IDE; CMake; etc.)
C++ Basics ** (Data types; Operators; Statements; Array; Function; Recursion; Constant;
Week 3 (9/5 & 9/7) HW1 Assigned
Preprocessor; etc.)
Memory Management ** (Scope and Lifetime; Pointers; References; Parameter Passing;
Week 4 (9/12 & 9/14)
etc.)
Week 5 (9/19 & 9/21) Standard Template Libraries (Containers; Iterators; Templates; Lambda; Variadic; etc.)
Object-Oriented Programming (Enum; Union; Struct; Class; Constructors; Destructors;
Week 6 (9/26 & 9/28) Project Assignment and Examples
etc.)
Week 7 (10/3 & 10/5) Object-Oriented Programming (Operator Overloading, Inheritance, Polymorphism) HW1 Due on 10/6
Week 8 (10/10 & 10/12) GUI Libraries (SDL, OpenGL, Qt, etc.) HW2 Assigned
Project Proposal Submission Due on
Week 9 (10/17 & 10/19) Utility Libraries (Date & Time; File System Handling; Numerics; Mouse & Keyboard; etc.)
10/20
Week 10 (10/24 &
Regular Expressions Libraries *** (Regex)
10/26)
Concurrent Programming and Parallel Computing *** (Libraries; Algorithms;
Week 11 (10/31 & 11/2)
Applications; etc.)
Week 12 (11/7 & 11/9) Socket Programming and Communication *** (UDP; TCP; MQTT; ROS; etc.) HW2 Due on 11/10
Week 13 (11/14 & Final Project Submission Due on
Programming and Compile Libraries (Writing your own; Linking 3rd-Party; etc.)
11/16*) 11/17
Week 14 (11/21 &
Thanksgiving Break No Classes
11/23)
Week 15 (11/28 &
Project Presentation Exact Presentation Date TBD
11/30)
Week 16 (12/5 & 12/7) Project Presentation Exact Presentation Date TBD
*** We may not get to all of these topics. The order and content of the topics may also change.
Class Cancellation
If the class is canceled, any topics to be covered will be covered on the next day of class. Any dues assignments will also be due the next day of class.
Academic Integrity
You may work in groups on the homework. You (and every other student in the group) must list who you worked with otherwise similar homework may be
considered academic integrity violations.
Faculty Senate Rule 49-20 states, in part, "Academic integrity is the pursuit of scholarly activity free from fraud and deception and is an educational objective
of this institution."
Academic integrity is important for students both professionally and personally. Students violate the ideals of ethical conduct when they feel behind,
confused, or if the directions are unclear. Please speak either to the Prof. or the TA if this is the case. In order to promote academic integrity, students will be
asked to sign a statement indicating that the work they submit is their own.
The University defines academic integrity as the pursuit of scholarly activity in an open, honest and responsible manner. All students should act with personal
integrity, respect other students’ dignity, rights, and property, and help create and maintain an environment in which all can succeed through the fruits of their
efforts (refer to Senate Policy 49-20 (https://senate.psu.edu/policies-and-rules-for-undergraduate-students/47-00-48-00-and-49-00-
grades/#:~:text=49%2D20%20Academic%20Integrity,-
Definition%20and%20expectations&text=Academic%20integrity%20includes%20a%20commitment,of%20falsification%2C%20misrepresentation%20or%20deceptio
). Dishonesty of any kind will not be tolerated in this course. Dishonesty includes, but is not limited to, cheating, plagiarizing, fabricating information or
citations,
facilitating acts of academic dishonesty by others, having unauthorized possession of examinations, submitting work of another person or work previously
used without informing the instructor or tampering with the academic work of other students. Students who are found to be dishonest will receive academic
sanctions and will be reported to the University’s Office of Student Conduct for possible further disciplinary sanctions (refer to Senate Policy G-9
(https://undergrad.psu.edu/aappm/G-9-academic-
integrity.html#:~:text=A%20student%20who%20has%20received,late%20drop%20and%20retroactive%20withdrawal.) ).
Students facing allegations of academic misconduct may not drop/withdraw from the affected course unless they are cleared of wrongdoing (see G-
9: Academic Integrity (https://undergrad.psu.edu/aappm/G-9-academic-integrity.html) ). Attempted drops will be prevented or reversed, and students will
be expected to complete course work and meet course deadlines. Students who are found responsible for academic integrity violations face academic
outcomes, which can be severe, and put themselves at jeopardy for other outcomes which may include ineligibility for Dean’s List, pass/fail elections, and
grade forgiveness. Students may also face consequences from their home/major program and/or The Schreyer Honors College.
In order to receive consideration for reasonable accommodations, you must contact the appropriate disability services office at the campus where you are
officially enrolled. You will participate in an intake interview and provide documentation. See documentation guidelines at Applying for Services from
Student Disability Resources (http://equity.psu.edu/student-disability-resources/applying-for-services) . If the documentation supports your request for
reasonable accommodations, your campus’s disability services office will provide you with an accommodation letter. Please share this letter with your
instructors and discuss the accommodations with them as early in your courses as possible. You must follow this process for every semester that you
request accommodations.
If you are up to date on COVID-19 vaccinations, you do not need to quarantine or stay home unless you develop symptoms. If you have not been vaccinated
for COVID-19, you must stay home and quarantine for 5 full days.
Even if you don’t develop symptoms, get tested at least 5 days after you last had close contact with someone with COVID-19.
Watch for symptoms and wear a well-fitting mask for 10 full days after exposure any time you are around others inside your home or in public.
If you have tested positive for COVID-19 or have symptoms, regardless of vaccination status:
You may end isolation after 5 full days if you are fever-free for 24 hours without the use of fever-reducing medication and your symptoms are improving. If
you got very sick from COVID-19, you should isolate for at least 10 days.
Wear a well-fitting mask for 10 full days after you receive your first positive test any time you are around others inside your home or in public.
Close Contact Definition: A close contact is someone who was less than 6 feet away from an infected person (laboratory-confirmed or a clinical diagnosis) for
a cumulative total of 15 minutes or more over a 24-hour period. For example, three individual 5-minute exposures for a total of 15 minutes. People who are
exposed to someone with COVID-19 after they completed at least 5 days of isolation are not considered close contacts
Course Summary:
Date Details Due
Tue Oct 3, 2023 AERSP 424 Fall23: Adv Computer Progr 4:30pm to 6pm
(https://psu.instructure.com/calendar?
Date Details Due
event_id=4291926&include_contexts=course_2280984)
Fri Nov 17, 2023 Final Submission (Code + Report) due by 11:59pm
(https://psu.instructure.com/courses/2280984/assignments/15293927)