CS 102 Fundamentals of Computation

CS 102 Fundamentals of Computation

Course Description

This course introduces students to the fundamental concepts of algorithmic thinking as a primer to programming. It is intended for students who have little to no prior programming experience with the goal of providing a strong foundation for CS 103 Introduction to Programming. The course introduces the mathematics and basic language constructs needed for programming as well as the problem-solving techniques required to analyze a problem and produce an algorithm. These techniques are put into practice over the course of the semester with an introduction to programming using C++. Weekly lab and programming assignments will provide hands-on experience and active learning techniques.
Concepts include data representation, basic discrete math, control structures (conditional and iterative structures), functions, and arrays. Weekly small-group discussions will provide the opportunity for students to practice the concepts learned in class, review and ask questions. Weekly assignments will provide opportunity to practice, apply, and deepen the knowledge gained from lectures. By the end of this course, students should feel comfortable to take information-based problem descriptions and write a software program in C++ to perform the required task.

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. Choose appropriate data and variable types to store specific kinds and ranges of information
2. Write, compile, and run a computer program
3. Understand the way computers represent and operate on data
4. Trace provided C and C++ code line-by-line to analyze what operations are being performed and describe what the program will output
5. Employ programming concepts: variables, control structures, loops, and arrays to develop programs that solve information problems.
6. Decompose programs into subtasks/functions that use appropriate argument passing techniques.
7. Interpret written program requirements and develop a programmatic solution to meet those requirements.
Prerequisite(s): None

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/cs102. 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/cs102.
2. Q&A website: A Q&A and announcement website, EdStem, will be utilized: https://edstem.org/us/courses/7572/discussion/ . 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 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.

Zoom

In-person attendance is the only supported option for lecture and lab. For the sake of review and if you become ill, we will provide lecture recordings upon written request to a designated TA (see the course website homepage) as well as 1 week before exams. We encourage you to review lecture notes, attend office hours, and form study groups in place of relying on recorded lectures for review.

Technological Proficiency and Hardware/Software Required

A laptop and Internet connection will generally suffice to complete homeworks.

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

Availability: Homework will be made available on Codio (which can be accessed by links on Blackboard..Assignments) on the indicated date (usually the following Thursday after it is made available).

Due dates and Codio: The due date of each assignment is shown on the the Homeworks page. 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.

As you complete portions of your HW code you will need to run checks in Codio. The Codio interface is NOT always intuitive. Sometimes if you get some partial credit but not FULL credit, you may see a green check mark next to the test. But it is your responsibility to view (scroll through) the full output and verify there are no errors. Regrades will NOT be accepted for reasons such as, “I saw the green check mark and thought the tests passed.”

Some points from each submission will be based on visual inspection by our grading staff. You should indent and comment your code using the guidelines provided on our website. Simply completing your code and passing the tests is NOT ENOUGH.

Late Submission: You may submit homeworks up to 24 hours (1 day) late. A late submission is only eligible for 75% 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 24 hours, submissions will be rejected.

Grading/Rubric: A majority of the points will be awarded for correctness of the code which will be determined through a sequence of automated tests that match the output of your program to the expected, correct output. 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. You can submit as much as you like until you correct those mistakes. And each submission will be graded visually to ensure your code follows the CS 102 style guide (https://bytes.usc.edu/cs102/style-guide.html). Be sure you read through this guide and follow its suggestions.

Solutions: Solutions to the homework problems 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 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.

You MAY use generative AI tools for working on non-graded practice, or conceptual questions that don't involve HW-specific problems. Use it to help you practice on OTHER problems so that you can do the HW on your own and with the 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 two to four open-ended assignments, referred to as portfolio assignments. 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

Overview: Labs are small-group sessions led by one or two of our course staff. Most labs will have time to review some of the concepts presented that week along with a few exercises to perform. Unlike homeworks, labs are a place of collaboration where you are encouraged to work together, learn from each other and help one another. Some weeks may include reviewing other's portfolio work or time for individual help and review on homework assignments.

Attendance/Participation: Graded based on attendance and giving an honest effort. Your lab leader will provide instructions for how to log your attendance. You may miss at most 3 labs during the semester without penalty. For each lab missed thereafter you will lose 1% of the 6% of your course grade dedicated to lab participation. If you have a dispute about attendance, please contact your discussion leader directly (and not the instructor or head TA).

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 Accomodations: 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.
• Exam 1 usually tests concepts and your ability to understand code through tracing/analysis problems. It is usually multipe choice and fill in the blank. It is usually administered via Gradescope.
• Exam 2 tests your ability to write code to solve a problem with given input/output requirements. It is usually administered via Gradescope and Codio.
• The Final is a mix of tracing and coding and is usually administered via Gradescope and Codio.
Because the majority of 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
Homework
32%
Portfolio
6%
Labs
6%
Midterm 1 + 2
Higher = 22%
Lower = 12%
Final
22%

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 CS102, 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
Computer System Overview;
*Data Representation (Video Lecture)*
Program Structure / Expressions
Ch. 1.1-1.4

Week 2
Output and Input
More Expressions
Ch. 2.1-2.3

Week 3




Labor Day – Holiday
Division, Modulo
Conditionals

Ch. 2
HW 1a & 1b
Due
(See website)
Week 4
Conditionals
Iterative Structures (Loops)
Ch 3
Ch. 4.1-4.5
HW 2 Due
(See website)
Week 5
Scalar Input Loop Examples
Ch. 4.1-4.5, 4.7
HW 3 Due +
Portfolio 1
(See website)
Week 6
Arrays
Examples with Arrays
Ch 6.1-6.2
HW 4 Due
(See website)
Week 7
Debugging
Review
(Midterm 1 – 10/4 in the Quiz section)
Ch. 4.3, 4.8

Week 8
Nested Loops;
Nested Loop Examples
Ch 4.8
Portfolio 2
Due
Week 9
Nested Loops and Arrays
Functions
Ch. 6.2, 6.4-6.5
Ch. 5.1-5.5
HW 5 Due
(See website)
Week 10
User-defined functions
Functional Decomposition
Ch 5
HW 6 Due
(See website)

Week 11
Passing scalars and Passing Arrays
Review
(Midterm 2 – 11/1 in the Quiz section)
Ch. 5.3, 5.9, 6.3

Week 12
Strings and Character Arrays
Abstraction and decomposition
Ch 2.5, 7.3
Class Notes
Portfolio 3
Due
Week 13
Abstraction and decomposition
Class Notes
HW 7 Due
(See website)
Week 14
Searching/Sorting
Thanksgiving Holiday
Class Notes

Week 15
Languages beyond C++
Review
Class Notes
HW 8 Due
(See website)

FINAL
See Exceptions Final List
Sat. Dec 9 th 11 a.m. - 1 p.m.

.Statement on Academic Conduct and Support Systems

Academic Integrity:

The University of Southern California is a learning community committed to developing successful scholars and researchers dedicated to the pursuit of knowledge and the dissemination of ideas. Academic misconduct, which includes any act of dishonesty in the production or submission of academic work, compromises the integrity of the person who commits the act and can impugn the perceived integrity of the entire university community. It stands in opposition to the university’s mission to research, educate, and contribute productively to our community and the world.

All students are expected to submit assignments that represent their own original work, and that have been prepared specifically for the course or section for which they have been submitted. You may not submit work written by others or “recycle” work prepared for other courses without obtaining written permission from the instructor(s).

Other violations of academic integrity include, but are not limited to, cheating, plagiarism, fabrication (e.g., falsifying data), collusion, knowingly assisting others in acts of academic dishonesty, and any act that gains or is intended to gain an unfair academic advantage.

The impact of academic dishonesty is far-reaching and is considered a serious offense against the university. All incidences of academic misconduct will be reported to the Office of Academic Integrity and could result in outcomes such as failure on the assignment, failure in the course, suspension, or even expulsion from the university.

For more information about academic integrity see the student handbook or the Office of Academic Integrity’s website, and university policies on Research and Scholarship Misconduct.

Please ask your instructor if you are unsure what constitutes unauthorized assistance on an exam or assignment, or what information requires citation and/or attribution.

Students and Disability Accommodations:

USC welcomes students with disabilities into all of the University’s educational programs. The Office of Student Accessibility Services (OSAS) is responsible for the determination of appropriate accommodations for students who encounter disability-related barriers. Once a student has completed the OSAS process (registration, initial appointment, and submitted documentation) and accommodations are determined to be reasonable and appropriate, a Letter of Accommodation (LOA) will be available to generate for each course. The LOA must be given to each course instructor by the student and followed up with a discussion. This should be done as early in the semester as possible as accommodations are not retroactive. More information can be found at osas.usc.edu. You may contact OSAS at (213) 740-0776 or via email at [email protected].

Support Systems:

Counseling and Mental Health - (213) 740-9355 – 24/7 on call 

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

988 Suicide and Crisis Lifeline - 988 for both calls and text messages – 24/7 on call

The 988 Suicide and Crisis Lifeline (formerly known as the National Suicide Prevention Lifeline) provides free and confidential emotional support to people in suicidal crisis or emotional distress 24 hours a day, 7 days a week, across the United States. The Lifeline is comprised of a national network of over 200 local crisis centers, combining custom local care and resources with national standards and best practices. The new, shorter phone number makes it easier for people to remember and access mental health crisis services (though the previous 1 (800) 273-8255 number will continue to function indefinitely) and represents a continued commitment to those in crisis.

Relationship and Sexual Violence Prevention Services (RSVP) - (213) 740-9355(WELL) – 24/7 on call

Free and confidential therapy services, workshops, and training for situations related to gender- and powerbased harm (including sexual assault, intimate partner violence, and stalking). 

Office for Equity, Equal Opportunity, and Title IX (EEO-TIX) - (213) 740-5086 

Information about how to get help or help someone affected by harassment or discrimination, rights of protected classes, reporting options, and additional resources for students, faculty, staff, visitors, and applicants.

Reporting Incidents of Bias or Harassment - (213) 740-5086 or (213) 821-8298
Avenue to report incidents of bias, hate crimes, and microaggressions to the Office for Equity, Equal Opportunity, and Title for appropriate investigation, supportive measures, and response.
The Office of Student Accessibility Services (OSAS) - (213) 740-0776
OSAS ensures equal access for students with disabilities through providing academic accommodations and auxiliary aids in accordance with federal laws and university policy.
USC Campus Support and Intervention - (213) 740-0411
Assists students and families in resolving complex personal, financial, and academic issues adversely affecting their success as a student.

Diversity, Equity and Inclusion - (213) 740-2101

Information on events, programs and training, the Provost’s Diversity and Inclusion Council, Diversity Liaisons for each academic school, chronology, participation, and various resources for students.

USC Emergency - UPC: (213) 740-4321, HSC: (323) 442-1000 – 24/7 on call

Emergency assistance and avenue to report a crime. Latest updates regarding safety, 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-6000, HSC: (323) 442-1200 – 24/7 on call

Non-emergency assistance or information.

Office of the Ombuds - (213) 821-9556 (UPC) / (323-442-0382 (HSC)

A safe and confidential place to share your USC-related issues with a University Ombuds who will work with you to explore options or paths to manage your concern.

Occupational Therapy Faculty Practice - (323) 442-2850 or [email protected]

Services for USC students to support health promoting habits and routines that enhance quality of life and academic performance.

发表评论

电子邮件地址不会被公开。 必填项已用*标注