AERSP 424 Fall23 - Adv Computer Progr

Download as pdf or txt
Download as pdf or txt
You are on page 1of 8

AERSP 424 Fall23: Adv Computer Progr

Jump to Today  Edit

AERSP 424: Advanced Computer Programming


Class Information:

Willard Building 064

T/Th 4.35 PM - 5.50 PM

Instructor Information:

Name: Assistant Research Professor Thanakorn Khamvilai

Email: [email protected] (mailto:[email protected])

Office Hours: T/Th 10:30-11:30 AM or if the door sign says I'm available.

Office Location: Hammond 157D.

Additional Office Hours: Before and After Classes.

Virtual Meeting: https://psu.zoom.us/my/thanakorn.khamvilai (https://psu.zoom.us/my/thanakorn.khamvilai) (by appointment only)

Teaching Assistant Information:

Name: Li, Xiangfu

Email: [email protected] (mailto:[email protected])

Office Hours: M/W 4:40 PM - 6:40 PM at Sackett 118 (except Sept. 25 & 27, which will be at Hosler 218)

Virtual Meeting: https://psu.zoom.us/j/5448364180 (https://psu.zoom.us/j/5448364180) (please send appointments by email)

Learning Assistant Information:

Name: Nawaf Alhezab

Email: [email protected] (mailto:[email protected])

Office Hours: Friday 11:15 AM - 12:30 PM at 103 EE West

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:

Design and implement software that performs functions correctly


Generate software that is readable, understandable, and maintainable.
Given a portion of software explain the purpose and output of the code.
Analyze computer code for bugs, inefficiencies, and the cause of failures.
Given a set of specifications create software that will solve a specified problem.
Utilize common libraries such as the Standard Template Library.
Appreciate memes at https://www.reddit.com/r/ProgrammerHumor/ (https://www.reddit.com/r/ProgrammerHumor/)

Textbook (Not Required)


Modern C++ for absolute beginners: a friendly introduction to C++ programming language and C++11 to C++20 standards,

Author: Slobodan Dmitrović

Available Online without cost at PSU Library: https://catalog.libraries.psu.edu/catalog/37455248 (https://catalog.libraries.psu.edu/catalog/37455248)

Reference
cppreference.com (https://en.cppreference.com/w/)

In-Class Coding Problems


https://www.hackerrank.com/domains/cpp (https://www.hackerrank.com/domains/cpp)

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.

Type Frequency Weight

In-class participation * Daily 10%

Knowledge Homework * Weekly 10%

Coding Homework Two 20%

Project Proposal One 5%

Project Software One 30%

Project Report One 10%

Project Presentation One 10%

Project Peer Review One 5%

* Full credit if submitted relevant answers.

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

* Instructor travel / TA Substitute.

** These topics may take longer than what is scheduled.

*** 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.) ).

The Use of Generative AI


According to Penn State policy G-9: Academic Integrity (https://undergrad.psu.edu/aappm/G-9-academic-integrity.html) , an academic integrity violation is
“an intentional, unintentional, or attempted violation of course or assessment policies to gain an academic advantage or to advantage or disadvantage
another student academically.” Unless your instructor tells you otherwise, you must complete all course work entirely on your own, using only sources that
have been permitted by your instructor, and you may not assist other students with papers, quizzes, exams, or other assessments. If your instructor allows
you to use ideas, images, or word phrases created by another person (e.g., from Course Hero or Chegg) or by generative technology, such as ChatGPT, you
must identify their source. You may not submit false or fabricated information, use the same academic work for credit in multiple courses, or share
instructional content. Students with questions about academic integrity should ask their instructor before submitting work.

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.

Services for Students with Disabilities


Penn State welcomes students with disabilities into the University's educational programs. Every Penn State campus has an office for students with
disabilities. The Office for Student Disability Resources (http://equity.psu.edu/student-disability-resources) website provides contact information
for Campus Disability Coordinators (http://equity.psu.edu/student-disability-resources/campus-disability-coordinators) at every Penn State campus. For
further information, please visit the Office for Student Disability Resources (http://equity.psu.edu/student-disability-resources) website

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.

Counseling and Psychological Services


Many students at Penn State face personal challenges or have psychological needs that may interfere with their academic progress, social development, or
emotional well-being. The university offers a variety of confidential services to help you through difficult times, including individual and group counseling,
crisis intervention, consultations, online chats, and mental health screenings. These services are provided by staff who welcome all students and embrace a
philosophy respectful of clients’ cultural and religious backgrounds, and sensitive to differences in race, ability, gender identity, and sexual orientation.

Counseling and Psychological Services at University Park (CAPS): 814-863-0395


http://studentaffairs.psu.edu/counseling/ (http://studentaffairs.psu.edu/counseling/)
Penn State Crisis Line (24 hours/7 days/week): 877-229-6400
Crisis Text Line (24 hours/7 days/week): Text LIONS to 741741

COVID-19 Quarantine and Return to Class CDC Guidelines:


Per CDC guidance, please remember the following:
If you were exposed to COVID-19 through close contact (see Close Contact definition):

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:

Stay home for 5 full days and isolate from others

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 Aug 29, 2023  8/29 due by 7pm


(https://psu.instructure.com/courses/2280984/assignments/15459321)
Date Details Due

Thu Aug 31, 2023  8/31 due by 7pm


(https://psu.instructure.com/courses/2280984/assignments/15464612)

 AERSP 424 Fall23: Adv Computer Progr


(https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291918&include_contexts=course_2280984)
Tue Sep 5, 2023

 9/5 due by 6pm


(https://psu.instructure.com/courses/2280984/assignments/15470110)

 AERSP 424 Fall23: Adv Computer Progr


(https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291919&include_contexts=course_2280984)
Thu Sep 7, 2023

 9/7 due by 7pm


(https://psu.instructure.com/courses/2280984/assignments/15474772)

Fri Sep 8, 2023  Week2 due by 11:59pm


(https://psu.instructure.com/courses/2280984/assignments/15464957)

 AERSP 424 Fall23: Adv Computer Progr


Tue Sep 12, 2023 (https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291920&include_contexts=course_2280984)

 AERSP 424 Fall23: Adv Computer Progr


Thu Sep 14, 2023 (https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291921&include_contexts=course_2280984)

Fri Sep 15, 2023  Week3 due by 11:59pm


(https://psu.instructure.com/courses/2280984/assignments/15474979)

 AERSP 424 Fall23: Adv Computer Progr


(https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291922&include_contexts=course_2280984)
Tue Sep 19, 2023

 9/19 due by 7pm


(https://psu.instructure.com/courses/2280984/assignments/15493973)

 AERSP 424 Fall23: Adv Computer Progr


(https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291923&include_contexts=course_2280984)
Thu Sep 21, 2023

 9/21 due by 7pm


(https://psu.instructure.com/courses/2280984/assignments/15497865)

Fri Sep 22, 2023  Week4 due by 11:59pm


(https://psu.instructure.com/courses/2280984/assignments/15486106)

 AERSP 424 Fall23: Adv Computer Progr


(https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291924&include_contexts=course_2280984)
Tue Sep 26, 2023

 9/26 due by 7pm


(https://psu.instructure.com/courses/2280984/assignments/15504529)

 AERSP 424 Fall23: Adv Computer Progr


Thu Sep 28, 2023 (https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291925&include_contexts=course_2280984)

Fri Sep 29, 2023  Week5 due by 11:59pm


(https://psu.instructure.com/courses/2280984/assignments/15498887)

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)

 10/3 due by 7pm


(https://psu.instructure.com/courses/2280984/assignments/15515835)

 AERSP 424 Fall23: Adv Computer Progr


(https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291927&include_contexts=course_2280984)
Thu Oct 5, 2023

 10/5 due by 7pm


(https://psu.instructure.com/courses/2280984/assignments/15519849)

 Week6 due by 11:59pm


(https://psu.instructure.com/courses/2280984/assignments/15508664)
Fri Oct 6, 2023

 HW1 due by 11:59pm


(https://psu.instructure.com/courses/2280984/assignments/15473179)

 AERSP 424 Fall23: Adv Computer Progr


(https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291928&include_contexts=course_2280984)
Tue Oct 10, 2023

 10/10 due by 6pm


(https://psu.instructure.com/courses/2280984/assignments/15526988)

 AERSP 424 Fall23: Adv Computer Progr


(https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291929&include_contexts=course_2280984)
Thu Oct 12, 2023

 10/12 due by 6:30pm


(https://psu.instructure.com/courses/2280984/assignments/15531268)

Fri Oct 13, 2023  Week7 due by 11:59pm


(https://psu.instructure.com/courses/2280984/assignments/15519975)

 AERSP 424 Fall23: Adv Computer Progr


(https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291930&include_contexts=course_2280984)
Tue Oct 17, 2023

 10/17 due by 6:30pm


(https://psu.instructure.com/courses/2280984/assignments/15540134)

 AERSP 424 Fall23: Adv Computer Progr


Thu Oct 19, 2023 (https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291931&include_contexts=course_2280984)

 Proposal due by 11:59pm


(https://psu.instructure.com/courses/2280984/assignments/15293928)
Fri Oct 20, 2023
 Week8 due by 11:59pm
(https://psu.instructure.com/courses/2280984/assignments/15531436)

 AERSP 424 Fall23: Adv Computer Progr


Tue Oct 24, 2023 (https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291932&include_contexts=course_2280984)

 AERSP 424 Fall23: Adv Computer Progr


Thu Oct 26, 2023 (https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291933&include_contexts=course_2280984)

 AERSP 424 Fall23: Adv Computer Progr


Tue Oct 31, 2023 (https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291934&include_contexts=course_2280984)
Date Details Due

 AERSP 424 Fall23: Adv Computer Progr


Thu Nov 2, 2023 (https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291935&include_contexts=course_2280984)

 AERSP 424 Fall23: Adv Computer Progr


Tue Nov 7, 2023 (https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291936&include_contexts=course_2280984)

 AERSP 424 Fall23: Adv Computer Progr


Thu Nov 9, 2023 (https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291937&include_contexts=course_2280984)

Fri Nov 10, 2023  HW2 due by 11:59pm


(https://psu.instructure.com/courses/2280984/assignments/15526803)

 AERSP 424 Fall23: Adv Computer Progr


Tue Nov 14, 2023 (https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291938&include_contexts=course_2280984)

 AERSP 424 Fall23: Adv Computer Progr


Thu Nov 16, 2023 (https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291939&include_contexts=course_2280984)

Fri Nov 17, 2023  Final Submission (Code + Report) due by 11:59pm
(https://psu.instructure.com/courses/2280984/assignments/15293927)

 AERSP 424 Fall23: Adv Computer Progr


Tue Nov 21, 2023 (https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291940&include_contexts=course_2280984)

 AERSP 424 Fall23: Adv Computer Progr


Thu Nov 23, 2023 (https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291941&include_contexts=course_2280984)

 AERSP 424 Fall23: Adv Computer Progr


Tue Nov 28, 2023 (https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291942&include_contexts=course_2280984)

 AERSP 424 Fall23: Adv Computer Progr


Thu Nov 30, 2023 (https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291943&include_contexts=course_2280984)

 AERSP 424 Fall23: Adv Computer Progr


Tue Dec 5, 2023 (https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291944&include_contexts=course_2280984)

 AERSP 424 Fall23: Adv Computer Progr


Thu Dec 7, 2023 (https://psu.instructure.com/calendar? 4:30pm to 6pm
event_id=4291945&include_contexts=course_2280984)

 Peer Review due by 11:59pm


(https://psu.instructure.com/courses/2280984/assignments/15296283)
Fri Dec 8, 2023

 Presentation due by 11:59pm


(https://psu.instructure.com/courses/2280984/assignments/15293926)

You might also like