CS 103 Introduction to Programming
Units: 4
Spring 2024
Course Description
This class is an introduction to computer programming, using C++ as the programming language. You will learn about variables, types, loops, conditional statements, functions, input/output, arrays, recursion, dynamic memory, object-oriented programming, performance, and several data structures. You will get a lot of practice reading, writing, and debugging computer programs. We assume some basic programming experience (eg. CSCI 102), which will be reviewed at the beginning of the semester followed by a fairly fast paced course. Those needing an on-ramp to programming are required to take the 2-unit CS 102 course before CS 103.
Learning Objectives
Below are the specific, measurable skills a student will demonstrate by the end of the course. These
objectives will be both taught and assessed in the course and are aligned with the assignments,
assessments and learning materials.
1. Write computer programs using conditional and iterative structures, and functional
decomposition.
2. Develop simple algorithms to solve computational problems.
3. Determine the computational complexity of simple algorithms.
4. Implement key algorithms within the field.
5. Perform functional decomposition and trace recursive solutions.
6. Select and implement appropriate basic data structures (e.g. arrays, linked-lists, array-based lists) and their access methods (e.g. pointers)
7. Correctly and efficiently manage memory and the lifetime of objects
8. Create programs that utilize both terminal and file I/O methods to perform data analysis.
9. Apply object-oriented principles.
10. Use Linux development tools needed to write, compile, and debug basic C++ programs.
Prerequisite(s): CS 102 (Students must complete CSCI 102, or pass its challenge exam, or have AP
Computer Science A credit to enroll in this course.) This means you must have working understanding of Java, C, or C++.
Co-Requisite(s): None
Recommended Preparation: Proficiency in high school math (including trigonometry, algebra, and basic probability).Course Materials
All content will be provided on our website: http://bytes.usc.edu/cs103. PDF versions of lecture slides will be posted on our website before lecture and may be printed before coming to class or used electronically.
Course Websites
1. Primary website: All course assignments, content, office hour information, etc. will be posted at our main website: http://bytes.usc.edu/cs103.
2. Q&A website: A Q&A and announcement website, EdStem, will be utilized: All official announcements regarding assignments, lectures, exams, etc. will be made via EdStem. It is your responsibility to check this site often.
3. Blackboard: Blackboard (http://blackboard.usc.edu) will also be used to record homework, quiz, and exam grades.
4. Codio: Lab and homework code submissions will be made via Codio.com which is a website that you can access through Blackboard. Click the link the Codio link on our Blackboard..Assignments page to register. Cost is ~$45.
5. Gradescope: Used for exams and some homework. It can be accessed via Blackboard. Click on the Gradescope link on on our Blackboard..Assignments page.
Zoom And Attendance
In-person attendance is the only supported mode for lecture and lab. For the sake of those who are ill, we will provide lecture recordings upon written request via the form on our course website homepage. Those who abusing this request system will not be provided lecture recordings. We may also periodically post recordings for review and study. We encourage you to review lecture notes, attend office hours, and form study groups in place of relying on recorded lectures for review.
Labs: Labs are in-person only. Our lab grading policy is designed for flexibility with a number of allowed absences intended to cover the case of illness or unavoidable schedule conflicts. Please note: Save your lab absences for when you really are sick or unable to attend vs. just sleeping in or wanting to go out of town for a long weekend. If you used all your absences and then are unable to attend, you will not get credit for that lab (except for extraordinary cases where USC support services indicate that an exception is warranted).
Technological Proficiency and Hardware/Software Required
A laptop and Internet connection are required to complete homeworks and other assignments. Exams will also be given using online methods, so a laptop with 90 min. of battery life is required.
Readings and Supplementary Materials
The following textbooks are require-mended (technically NOT required but strongly recommended) and will be referenced for readings and a major source of exercises and practice problems. We recommend you read the sections listed on the course schedule below for the corresponding week BEFORE attending the first lecture of that week.
1. Brief C++ Late Objects, Cay Hortsmann, J Wiley and Sons, (ISBN: 978-1119739708) or the older edition: C++ For Everyone, 2nd Ed., Cay Horstmann, J Wiley and Sons, 2012 (ISBN: 978-0470927137) Available at the bookstore and or from an online retailer.
Description and Assessment of Assignments
Homeworks and Projects
Availability: Homework and projects will be made available on Codio (which can be accessed by links on Blackboard..Assignments).
Due dates and Codio: The due date of each assignment is shown on the HW/Projects webpage. This is the date by which the assignment should be done for full credit. You MUST mark your assignment “COMPLETE” BEFORE the due date. If you are not done with the assignment you may continue to work on it after the due date with late penalties (see below) applied. If you mark your homework complete and then realize you want to modify something, you may re-open your assignment, however if you do so after the due date you will incur the penalties below (even if you don’t make any changes) and then you will need to mark it as complete when you are done.
Grading/Rubric: As you complete portions of your HW code you will need to run checks in Codio. The
Codio interface is NOT always intuitive. You should always review these results to ensure your program is outputting the desired information in the correct format (since a majority of the automated tests look for exact text matches, any formatting errors will lead to test failures). It is your responsibility to ensure (through review of the submission reports) that your program is producing the desired output format and values. Regrades will NOT be accepted for reasons such as, “I saw the green check mark and thought the tests passed.” Finally, no partial credit is given for code that does not pass the tests. So ensure you leave a few days for debugging your code. With that said, most assignments will have a small set of
points based on the style you use. You must follow the guidelines in the CS 103 style guide. These points will be assigned based on visual inspection by our grading staff. Simply completing your code and passing
the tests is NOT ENOUGH.
Late Submission: You may submit HW and project assignments up to 48 hours (2 days) late. A submission made within 1 day of the due date is only eligible for 90% credit and a submission made within 2 days of the due date is only eligible for 80% credit, so please try to get your work done and submitted on time. NO excuse for laptop connection/network issues, etc. will be accepted for late submissions. Codio can be accessed through any web-browser, so you can always go to a USC computer lab or borrow a friend's laptop should yours break. You should ensure you submit early to avoid any potential problems and thus avoid late penalties. After 48 hours, submissions will be rejected.
Solutions: Solutions to the assignments will not be made available. However, if you want help fixing features of your code you could not get right, please reach out to course staff after the due date.
Collaboration and Academic Integrity: Homework assignments are to be completed individually unless otherwise noted. You are NEVER allowed to show, verbally describe, or otherwise share any part of your code with another student. You should NOT verbally describe your code or guide another student on what to write or what to do. Furthermore, coding together on projects should be done with caution.
Developing similar pseudocode or even planning together when done at a detailed level can lead to code that is pretty much the same (and really a team effort vs. an individual effort) and is considered a violation.
Finally, copying (and then modification) or just “viewing for reference” any portion of code from Internet sources (including AI or websites) or fellow students is prohibited unless explicitly cleared with the instructor.
Policy for AI-generated work: Since creating, analytical, and critical thinking skills are part of the learning outcomes of this course, all assignments should be prepared by the student working individually or in groups. Students may not have another person or entity complete any substantive portion of the assignment. Developing strong competencies in these areas will prepare you for a competitive workplace.
Therefore, using AI-generated work in whole or in part (even for reference) is prohibited in this course, will be identified as plagiarism, and will be reported to the Office of Academic Integrity.
Note: Students with a pending violation or who are found to have violated academic integrity may NOT drop the course, even if you agree with the violation. In addition, the recommended sanction will be a - 50% on the assignment (not half credit, but 0 and an additional 50% penalty). So, your score in the gradebook will not be 0, but -50. The rationale for this policy is that a 0 is the score students who were unable to solve the assignment but did not violate the course policies would also get. So there must be a greater penalty for violations (i.e. -50).
You MAY use generative AI tools for working on non-graded practice, or conceptual questions that don't involve assignment-specific problems. Use it to help you practice on OTHER problems so that you can do the HW on your own and with the help of only the course staff.
Contesting Grades: You have AT MOST 1 WEEK after the HW scores are posted to contest your grade. To
contest your grade you should inquire with the TA who graded your work and list your reasons for
requesting a regrade.
After the semester: You MAY NOT post your solutions to assignments on public websites like github.com,
etc as they are derived from assignments which are copyrighted by your instructors and are the property
of USC. Any such action will be deemed a violation of academic integrity.
Portfolio
In an effort to provide you the experience of writing a program "from scratch" and to give you freedom to
apply the concepts taught in class to problems of your own interest, there will be one open-ended
assignment, referred to as a portfolio assignment. Each portfolio assignment will have some loose
direction and guidelines regarding the concepts you are to use, but within those guidelines, you are free to
write whatever program you wish. We strongly encourage you to challenge yourself though within
reason. Portfolio project will be graded as CR/NC based on whether they meet the provided requirements.
These portfolio assignments can also be used to obtain feedback on coding style, efficiency, and practice
from your lab cohort and TAs. Finally, these portfolio assignments are YOURS and may be posted publicly
and distributed to potential employers or anyone you wish.
Labs
Each week you will meet in your registered Friday lab time. To ensure seating availability and fairness of
time distribution from our course staff, you may ONLY attend the lab section for which you are registered.
However, not all weeks have graded labs, as some weeks are designed to be more open for your benefit.
Graded Labs: We will have roughly 8 weeks of graded labs. During those weeks, labs are graded Credit
(CR) / No Credit (NC). You will receive credit for attending the majority of the lab session and, in addition,
achieving a score of 50% or better on the specified lab tasks. They must be completed during your
registered lab session. (Note: Do not worry if Blackboard shows your raw score on a lab. As long as it
meets the 50% threshold for credit, you will get FULL marks when we calculate grades at the end of the
semester).
You may miss 2 labs without penalty. After missing 2 graded labs, you will lose 1 of the 6% that labs
account for you in your course grade for each additional absence.
For any errors in recording your credit, you have 1 week after your grade is posted to contest the issue.
Start by reaching out to your lab leaders. If you cannot resolve the issue, post a PRIVATE note on EdStem
and indicate the issue that you and your lab leaders have discussed.
Ungraded Labs: During ungraded lab weeks you may attend or not, as you deem necessary. We will often
provide some planning tips for the current assignment(s) or review concepts and best-practices on the
previous assignment. We will always leave some portion of time for open questions and help on your
assignment(s).
Since CS 103 is a large class we wanted to provide some accountability and personal connection with a
course staff (and hopefully some of your fellow students). Thus, within your lab, each student will be
assigned to one of your lab leaders as your cohort leader. Certain labs may set aside time for you to check
in with your cohort leader. During your meet-up you are welcome to ask your CP any content related
questions and they may check in with you about how the course is going. Your cohort staff leader should
Syllabus for CS103, Page 4 of 8Syllabus for CS103, Page 5 of 8
be a primary contact if you start to feel like you are struggling or if you have other concerns. We also
encourage you to get to know your fellow students during labs, form study groups for the midterms, etc.
Exams
Time and Location: There will be two midterm exams and one final. The midterm exams will be held
during the quiz section on Week 7 and 11. The dates of the exams are shown on the attached schedule but
may be moved to a different date in exceptional cases. The exams will likely be in alternative (larger)
classrooms. Always check with the instructor as the listed exam date approaches to confirm the date and
time. The exam location will be announced in class and on the web site. You are responsible for finding out
when and where the exams will be held. Makeup exams will be given if you have a valid excuse (e.g.
serious illness or accident but proof will be required).
Academic Accommodations: If you have USC approved academic accommodations, please check with your
instructor 2 weeks before the exam to determine when and where you will take the exam.
Exam Style: Exams are designed to not only test your retention of the material but your ability to apply it
to design and analyze new or novel problems. In this way, your mastery and depth of understanding of the
course content will be assessed. Exams are usually administered via Gradescope and Codio and so you will
need a laptop with sufficient battery life. For coding questions, you will write your code on Codio.com
and then paste/upload it to Gradescope for visual grading. Because most points will come from coding
problems or tracing through provided code to analyze its behavior, your struggle with the homework
coding problems and lab exercises will greatly pay off. Students who simply "get the assignments done"
without reviewing and understanding each facet, will often struggle on the exams.
Grading Breakdown
Assignment
% of Grade
Labs
6%
7 Homework
HW1-6 = 2.5% each
HW7 = 1%
16%
4 Projects (5% each)
20%
Exams (MTs + Final)
Lowest Exam
Median Exam
Highest Exam
14%
20%
24%
Grading Scale:
Course final grades will be determined using the following scale. If the grade distribution is lower than
expected the scale may be shifted downward but will never be shifted upward.
A
94-100
B+
87-89
C+
77-79
D+
67-69
F
59 and below
A-
90-93
B
83-86
C
73-76
D
63-66
B-
80-82
C-
70-72
D-
60-62
Assignment Rubrics
See the section above for relevant assessment procedures for homeworks.
Grading Timeline
Homeworks will be graded on the Codio. You will already know if you have passed the automated tests and
the remaining visual inspection points will be posted within 1.5 weeks of submission.Syllabus for CS103, Page 6 of 8
Course Schedule: A Weekly Breakdown
Below is a detailed course calendar that provides a thorough list of deliverables—readings, assignments,
examinations, etc., broken down on a weekly basis. For each unit of in-class contact time, the university
expects two hours of out of class student work per week over a semester.
Topics/Daily Activities
Readings and
Homework
Deliverable/
Due Dates
Week 1
Course Overview;
C++ Differences
BONUS Lecture – 1/11 on Zoom at7 p.m. during Quiz
section
1.1-1.5, 2.1-
2.4,8.3 3.1-3.7
4
Week 2
Martin Luther King Jr. Day – Holiday
C++ Arrays and Functions 1
6.1-6.6
HW 1 Due
(See website)
Week 3
C++ Arrays and Functions 2
Compilation, Runtime, C-Strings
5.1-5.8
7.1-7.3
Week 4
Pointers Intro and Pass-by-Reference
Dynamic Allocation
7.1-7.2,7.4
Proj 1 Due
(See website)
Week 5
Pointer Arithmetic; Arrays of Pointers
Command Line Arguments, Deep vs. Shallow Copy
7.3, 7.5, 7.6
8.5
HW 2 Due
(See website)
Week 6
Object Introduction: Structs and Strings
File Streams and User-defined objects
7.7-7.8, 7.3
8.1-8.3, 9.1-9.3
Proj 2 Due
(See website
Week 7
Presidents Day – Holiday
Defining Objects and Midterm Review
(Midterm 1 – 2/22 in the Quiz section)
9.4-9.6
Week 8
Images
Linked Lists
Class notes
HW 3 Due
(See website)
Week 9
Reference and Const Parameters
Vectors and Deques
5.9
Ch 6.7
HW 4 Due
(See website)
Spring Break
Week 10
Operator overloading
Copy Semantics
HW5 Due
(See website)
Week 11
Copy semantics + Midterm Review
Inheritance 1
(Midterm 2 – 3/28 in the Quiz section)
Class Notes
Ch. 10.1-10.2
Week 12
Inheritance and Polymophism
Polymorphism
10.3-10.4
Proj 3 Due
(See website)
Week 13
I/O – Streams and Parsing
Streams and Parsing
Class Notes.
Ch. 8
HW 6 Due
(See website)
Week 14
Exceptions
Binary File I/O
Ch. 8.5
Proj 4 Due
(See website)
Week 15
Recursion
Review
5.1
HW 7 Due
(See website)
FINAL
See Exceptions Final List
Tues. May 7th 4:30-6:30 p.m.