CSCI 103L Spring 2021: Introduction to Programming
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.
- In Pursuit of the Traveling Salesman, the history, people, theory and applications for a key problem in computer science
- Logicomix, a graphic novel about computer science's history as developing from mathematical logic
- Coders at Work, a series of frank interviews with famous and historically significant programmers
- Effective Programming: More Than Writing Code, a collection of essays from a founder of StackOverflow.com
- Alan Turing: The Enigma, the authoritative biography of a key figure in early computer science
- In The Beginning, There Was The Command Line, a short book (or long essay) on open-source and corporate culture, by Neal Stephenson of Cryptonomicon fame
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
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!
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.
- Develop simple algorithms to solve computational problems.
- Implement key algorithms within the field.
- Write computer programs using conditional and iterative structures, and functional decomposition.
- Perform functional decomposition and trace recursive solutions.
- Select an appropriate basic data structure (e.g. arrays) and access methods (e.g. pointers).
- Determine the computational complexity of simple algorithms.
- Apply basic object-oriented principles.
- 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
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.
- Primary website: All course assignments, content, office hour information, etc. will be posted at our main website: http://bytes.usc.edu/cs103.
- Q&A website: A Q&A and announcement website will be utilized: http://piazza.com/usc/spring2021/csci103l/home. All official announcements regarding assignments, lectures, exams, etc. will be made via Piazza. It is your responsibility to check this site often.
- Codio: Lab and project code submissions will be made via http://www.codio.com/ You must sign up for Codio using the sign up link during the first week of class: Sign Up for Codio
- Blackboard: Blackboard (http://blackboard.usc.edu) will be used to post exam grades.
Availability: Labs will be made available on the Codio web site (http://www.codio.com) 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.
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.
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.
|Assignment||% of Grade|
|Written + Programming Midterm||20% (highest score)
15% (lowest score)
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.
Learning programming is a challenging and unique task. But that's why you're here. There is copious help available, make use of it!
- The People page shows the office hours of the instructors, teaching assistants, and CPs. You can go to any TA or CP office hours. We would ask that you visit your respective instructor's office hours.
- If you have a question, then probably someone else does too! We encourage you to post questions to the course Piazza forums (see link above). Someone from the course staff will answer it. Additionally, you can answer other students' questions. Other students will benefit from seeing your questions and answers. Or you can create posts that are hidden from other students.
- Please do not e-mail your instructor directly, unless to discuss a specific personal or course administration issue. All questions regarding course material and course work shall be done through Piazza.
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,
- you must not show or give your work to any student who might take CSCI 103 in the future
- you must not leave your work in a public place (website, shared folder, bulletin board, etc)
- you must not seek others' solutions (whether by internet search or asking a friend)
- you must not read any solutions (if you see one by accident, close it and report it)
- you must not lead any other student step-by-step through any coursework
- and, these restrictions continue to apply after you are finished with the course.
There are restrictions in a couple of special cases:
- If you are getting help from a CSCI 103 alumnus or a tutor, they must not be looking at their own old code while helping you. This is because we don't want you to learn at a superficial level.
- You must use Piazza for coursework questions instead of posting to external sites like StackOverflow, Quora, etc.
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:
- discuss material from the book or lecture slides
- discuss questions of a general nature, e.g. "what is the difference between static and dynamic memory?" or "what are the parts of syntax of a for loop?"
- discuss strategies for developing and debugging, e.g. "how do you figure out what caused a segmentation fault"? (answer: use gdb)
- explain error messages, e.g. "what does the not declared in this scope error mean?" or "what is an invalid read of size 4 error in valgrind?"
- discuss the tools used throughout the course, e.g. "how do I enable debug information during compiling"?
- clarify wording in the homework, labs, or programming assignments, or draw diagrams to explain a concept
- discuss test cases, strategies and algorithms, as long as it is kept at the level of general descriptions/pseudocode rather than step-by-step instructions. E.g., "does it matter if we use static or dynamic memory?"
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
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” policy.usc.edu/scampus-part-b. Other forms of academic dishonesty are equally unacceptable. See additional information in SCampus and university policies on scientific misconduct, http://policy.usc.edu/scientific-misconduct.
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. engemannshc.usc.edu/counseling
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. www.suicidepreventionlifeline.org
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. engemannshc.usc.edu/rsvp
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: sarc.usc.edu
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. equity.usc.edu
Bias Assessment Response and Support
Incidents of bias, hate crimes and microaggressions need to be reported allowing for appropriate investigation and response. studentaffairs.usc.edu/bias-assessment-response-support
The Office of Disability Services and Programs
Provides certification for students with disabilities and helps arrange relevant accommodations. dsp.usc.edu
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. studentaffairs.usc.edu/ssa
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. diversity.usc.edu
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. emergency.usc.edu
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. dps.usc.edu