CSCI 103 Fall 2020 Introduction to Programming

CSCI 103 Fall 2020: Introduction to Programming


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.

Required Readings and Supplementary Materials

We require Brief C++: Late Objects 3rd Edition, by Cay Horstmann. The book is also known as C++ for Everyone, 3rd Edition. You will find the book available by both titles, they are exactly the same. There are various media types available: enhanced eText, printed or both. Here are two links:

The following books ARE NOT required or directly related to our class. But we recommend them if you are looking for more reading to increase your breadth of knowledge.

Required Equipment

You need to have a laptop or desktop capable of accessing our online coding environment Codio. Any relatively modern Windows, Mac, or Linux machine should work.

You will need to bring your laptop to lab each week. N/A Fall 2020

Bringing a laptop to lecture may be helpful but is not required. N/A Fall 2020

Required Subscription

For Fall 2020 we are using the online coding platform Codio. Sign up for our course here at this link: Codio Signup

There is a modest ~$42 subscription cost for the semester.

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. Develop simple algorithms to solve computational problems.
  2. Implement key algorithms within the field.
  3. Write computer programs using conditional and iterative structures, and functional decomposition.
  4. Perform functional decomposition and trace recursive solutions.
  5. Select an appropriate basic data structure (e.g. arrays) and access methods (e.g. pointers).
  6. Determine the computational complexity of simple algorithms.
  7. Apply basic object-oriented principles.
  8. Create programs that utilize input/output to perform data analysis.

Use Linux development tools needed to write, compile, and debug basic C++ programs..

Prerequisite(s): CSCI 102

Co-Requisite(s): CSCI 170 N/A Fall 2020

Course Materials

All content will be provided on our website: 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:
  2. Q&A website: A Q&A and announcement website will be utilized:  All official announcements regarding assignments, lectures, exams, etc. will be made via Piazza.  It is your responsibility to check this site often.
  3. Codio: Lab and project code submissions will be made via You must sign up for Codio using the sign up link during the first week of class: Sign Up for Codio
  4. Blackboard:  Blackboard ( will be used to post exam grades.



Availability:  Labs will be made available on the Codio web site ( at the beginning of each week and must be demonstrated to a CP/TA (not your lecture instructor) on or before the following Friday.  They should also be submitted via xxx, but MUST BE demoed to a live person. Labs are not to be started in lab, rather they are to be started as early as possible on your own and then either demo'ed or debugged in the lab section.

Deadline: We expect you to be done when there are 45 minutes remaining in your lab section, or earlier. Demo it to a TA/CP when it is complete. After everyone else has performed their first demo, you can re-demo it if time allows. No re-demos are allowed after your lab section ends, i.e. there are no late submissions. You are always allowed to demo your code earlier in the week at the office hours of a TA/CP.

Absentee policy: If you can't attend your assigned lab, demo it at office hours (see above).

Grading: Labs are usually graded out of 10 points based on correctness.  We will drop your lowest lab score. There are no late submissions.  Any regrade request must be made within 1 week of the end of the lab.

Collaboration and Academic Integrity: Lab assignments are to be completed individually unless otherwise noted.  You are NEVER allowed to show or share your code with another student.  Be careful of verbally guiding another student on what to write or what to do.  If another student is confused, you may help them but should not share any details of your solution.  The course staff is available to help students who are struggling.  Copying (and then modification) of any portion of code from Internet sources or fellow students is prohibited unless cleared with the instructor. See the Statement on Academic Conduct.


Programming Assignments

Overview:  Programming assignments are larger, more comprehensive tasks that should challenge you to integrate several programming concepts. They will be graded after submission by course staff, based on correctness as well as style.

Deadline and late policy: An assignment between 1 minute and 24 hours late will lose 25% of the maximum points. An assignment between 24 and 48 hours late will lose an additional 25%. After 48 hours we won't accept it. We will give each student five "slip days" (free late days) for the semester, but they may not be used to extend the 48-hour limit (this is because of grading logistics). You may use a maximum of 2 slip days per assignment.

You don't need to tell us if you use a slip day. Codio handles the slip days for you, <update verify!>

Advice: Save the slip days for when you really need them (including travel or when other classes keep you busy). Contact us in advance of the deadline if you become very ill…but only minimal extensions will be granted except for severe illnesses.

Contesting Grades:  You have AT MOST 1 WEEK after the 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.


Time and Location:  There will be one written midterm, one programming midterm and one final. The dates have been fixed now and are available on the schedule page.

The methods and procedures for the exams is TBD for Fall 2020 because of the online modailty. We will make any and all announcements regarding the exams with plenty of time for arrangements to be made. You are responsible for finding out when and where the exams will be held. Makeup exams are only given for extreme emergencies.

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.

Grading Breakdown

Assignment % of Grade
Labs 10%
Programming Assignments 30%
Written + Programming Midterm 20% (highest score)

15% (lowest score)

Final 25%

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 B+             86 C+             75 D+             60
A-              90 B                82 C                70 D               56
B-              78 C-              64 F                below 56

Grading Timeline

Programming assignments will be graded on the Codio website (http://xxx) with feedback and comments annotated inline with your code submission.  The grade and feedback will be usually be posted within 1.5 weeks of submission.

Regrading Policy

Occasionally, we make mistakes. To request a regrade: write a brief note indicating the perceived mistake by the grader, attach it to your graded work, and return it to the grader within 1 week of when the graded work was returned. After 1 week, no regrades will be accommodated.

Getting Help

Learning programming is a challenging and unique task. But that's why you're here. There is copious help available, make use of it!

Academic Honesty

All USC students are held to a high degree of academic honesty: this is to be fair to all students, but mostly, so that you actually get the intended benefits of the activities designed for you in the course.

All coursework that you submit (homework, labs, programming assignments, midterm and final exams) must be your work and yours alone. You may freely copy-and-paste any parts of the textbook and course materials when composing your work, so long as you cite them as sources. Here is a sample citation:

// next 2 lines adapted from p157 of textbook
while (cin >> input)
   total = total + input;

You must not copy anything from other sources into your work. Additionally,

There are restrictions in a couple of special cases:

However, discussing the course materials with other students is encouraged when it is of a general nature, so long as the work of one student is never shared with another. For example, you may:

To repeat for emphasis, you must never show any other CSCI 103 student your code, even "just for debugging" or "just as an example," nor may you look anyone else's CSCI 103 code. Only show your code to course staff (or people who have already taken CSCI 103).

We use software that automatically searches for similarities in submitted code. It is very good at identifying when one student has copied and modified another student's code. Anything it flags will be inspected manually in detail.

Violations of the course syllabus will be reported to SJACS. Sanctions include 0 on an assignment, F in the course, and stricter punishments for repeat offenders or cheating on exams. Additionally, USC's policy is that SJACS-violating students must stay enrolled in the course and CANNOT withdraw from the course until the issue is settled.

If you have a question about what is allowed or not, ask us!

Statement on Academic Conduct and Support Systems

Academic Conduct:

Plagiarism ‑ presenting someone else’s ideas as your own, either verbatim or recast in your own words ‑ is a serious academic offense with serious consequences. Please familiarize yourself with the discussion of plagiarism in SCampus in Part B, Section 11, “Behavior Violating University Standards” Other forms of academic dishonesty are equally unacceptable.  See additional information in SCampus and university policies on scientific misconduct,

Support Systems:

Student Counseling Services (SCS) ‑ (213) 740-7711 ‑ 24/7 on call

Free and confidential mental health treatment for students, including short-term psychotherapy, group counseling, stress fitness workshops, and crisis intervention.

 National Suicide Prevention Lifeline ‑ 1 (800) 273-8255

Provides free and confidential emotional support to people in suicidal crisis or emotional distress 24 hours a day, 7 days a week.

Relationship and Sexual Violence Prevention Services (RSVP) ‑ (213) 740-4900 ‑ 24/7 on call

Free and confidential therapy services, workshops, and training for situations related to gender-based harm.

Sexual Assault Resource Center

For more information about how to get help or help a survivor, rights, reporting options, and additional resources, visit the website:

Office of Equity and Diversity (OED)/Title IX Compliance ‑ (213) 740-5086

Works with faculty, staff, visitors, applicants, and students around issues of protected class.

Bias Assessment Response and Support

Incidents of bias, hate crimes and microaggressions need to be reported allowing for appropriate investigation and response.

The Office of Disability Services and Programs

Provides certification for students with disabilities and helps arrange relevant accommodations.

Student Support and Advocacy ‑ (213) 821-4710

Assists students and families in resolving complex issues adversely affecting their success as a student EX: personal, financial, and academic.

Diversity at USC

Information on events, programs and training, the Diversity Task Force (including representatives for each school), chronology, participation, and various resources for students.

USC Emergency Information

Provides safety and other updates, including ways in which instruction will be continued if an officially declared emergency makes travel to campus infeasible.

USC Department of Public Safety  ‑ UPC: (213) 740-4321 ‑ HSC: (323) 442-1000 ‑ 24-hour emergency or to report a crime.

Provides overall safety to USC community.