CSCI 103 Fall 2017 Introduction to Programming

CSCI 103 Fall 2017: Introduction to Programming


Required Textbook

We are using the textbook C++ for Everyone by Cay S. Horstmann. It has been ordered to the USC bookstore, or you can order it online. Reading this book is mandatory: lectures will reinforce the material it covers, but we will assume you already have basic familiarity each week with the chapters that are required reading.

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 capable of running the class virtual machine image. Any relatively modern Windows, Mac, or Linux machine should work.

Install the virtual machine as soon as possible. See here for details.

You will need to bring your laptop to lab each week.

Bringing a laptop to lecture may be helpful but is not required (any work can be done with a partner).

If you don't have a laptop, notify your instructor.

Learning Objectives

Upon completion of this course, students will be able to:

  1. Understand the key hardware components in a modern computer system and how software is mapped to the hardware.
  2. Develop simple algorithms to solve computational problems.
  3. Implement key algorithms within the field.
  4. Understand and determine the computational complexity of simple algorithms.
  5. Write computer programs using conditional and iterative structures, and functional decomposition.
  6. Select an appropriate basic data structure (e.g. arrays) and access methods (e.g. pointers).
  7. Understand functional decomposition and recursion.
  8. Understand basic object-oriented principles.
  9. Create programs that utilize input/output to perform data analysis.
  10. Utilize Linux development tools needed to write, compile, and debug basic C++ programs.


CS 109 or EE 109 must be taken concurrently with this class, or before it.

Important Links

Course website:

Piazza (Q&A, discussion):

Blackboard (grades for coursework will be posted here):

GitHub: we use GitHub as our login provider for this website. Please carefully and fully follow these instructions: GitHub Signup. You will demo your ability to login to this website and Piazza no later than the second lab session.

Course Components, Grading

All coursework is to be completed individually. See Academic Honesty below for more information.

5% Homework Short questions that serve to reinforce the reading.
10% Labs Activities that take place every week and which you demonstrate Friday in your assigned lab section.
30% Programming Assignments Longer tasks involving problem-solving and more complex compositions. You will submit several files that we will grade and return to you.
55% Exams We will weight the better of your written and programming midterm as 20% and the worse as 10%. The final will be worth 25%.

Grading Scale:

94: A 82: B 70: C 56: D
90: A- 78: B- 64: C- <56: F
86: B+ 75: C+ 60: D+

No rounding of percentages will be performed. We may lower the scale if the distribution is lower than expected.


The course has the following exams.

  1. Written midterm exam during a quiz section (Thursday 7:00-8:30PM, 10/5)
  2. Programming midterm exam during a quiz section (Thursday 7:00-8:30PM, 11/2)
  3. Written final exam during the University final exam period (Monday 4:30-6:30 PM, 12/11)


These are short automatically-graded exercises to complement the reading. You are meant to do these while reading the textbook and to submit them before lecture to gain basic familiarity with the material. These will take place more frequently at the start of the term.


A lab will be posted near the beginning of each week. You will demonstrate it to a CP/TA in your assigned Friday lab section.

Programming Assignments

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

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 for Students with Disabilities

Any student requesting academic accommodations based on a disability is required to register with Disability Services and Programs (DSP) each semester. A letter of verification for approved accommodations can be obtained from DSP. Please be sure the letter is delivered to your instructor as early in the semester as possible, and no later than two weeks before any exams.