CSCI 103L Spring 2021 Introduction to Programming

CSCI 103L Spring 2021: 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 Spring 2021

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

Required Subscription

For Spring 2021 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. If you drop the course within the first two weeks you may contact Codio support and request a refund. You must do this within the first two weeks!

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

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 must be submitted on Codio by clicking the "Mark as Completed" button before 8pm (20:00 hrs) Los Angeles time on the Friday a lab is due. To receive a score your lab 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. The above applies for in-person semester. For remote semester (e.g Spring 2021) you may attend any lab section on Friday to demonstrate your work. Initial demos are prioritized above re-demos (and lab work is prioritized above other coursework). If you live in a timezone that makes certain lab sections easier to attend vs. others, let the lab host know so you can be prioritized (we expect this to apply to only a few students). Labs finish at 7pm Pacific time on Friday and you must have your lab graded before then to receive a score for that lab (no late labs!). As soon as your lab is graded, mark it as completed and you will be able to see your score. Please verify you can see your score before leaving the lab or office hours session.

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

Grading: Labs are usually graded out of 100 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: Each of the first three days an assignment is late after the due date will incur a 5% penalty: (5%, 10%, 15% total). After 72 hours late programming assignments will be penalized a total of 80%, but you can keep working on them until the end of the semester. These penalties will give you some flexibility in case you get busy and can't complete an assignment on time. Contact us in advance of the deadline if you become very ill…but only minimal extensions will be granted except for severe illnesses.

Due dates and Codio: Codio will show the "due date" of all programming assignments as "May 2nd 21" which is at the end of the semester. This is to allow for the penalty structure above. The "penalty free" due date will be shown in the assignment name and on the Coursework page. In order to "stop the clock" and lock in your submission time you must click "Mark as Complete" for your assignment. If necessary you may re-open your assignment, however if you do so after the due date you will incur the penalties above (even if you don't make any changes).

Automatic Grading: all PAs are 100% automatically graded within Codio. These automatic checks are the only way to earn points towards your programming assignments. You must click the button to run the checks in order to get points. We will not be doing any hand grading of programming assignments. If you think there is a mistake in one of the automatic checks, let us know on Piazza and we'll investigate.

Collaboration and Academic Integrity: Programmings 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.


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 Spring 2021 because of the online modality. We will most likely use Gradescope for the written exams. 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 ensure that your needed accommodations are taken into account.

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


Exam Regrading Policy

Occasionally, we make mistakes. To request a regrade: use the regrade functionality inside Gradescope or if necessary post a note on Piazza 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.