CSCI 102: Fundamentals of Computation (Spring 2024)
Units: |
2 |
Instructor: |
Mohammad Reza Rajati, PhD
PHE 412
[email protected] – Include CSCI 102 in subject
|
Office Hours: |
After lectures, by appointment |
Webpage: |
Personal Homepage at Intelligent Decision Analysis |
TA(s): |
Will be introduced on Piazza |
Course Producers: |
Will be introduced on Piazza |
Lecture |
M, 3:00 –4:50 pm in THH 101 |
Webpages: |
Piazza Class Page for discussion and supplementary material
and USC Blackboard Class Page for grades
and ZyBooks for lectures, code submission, and grades
|
Prerequisite: |
None. |
Recommended Preparation: |
Proficiency in high school math
(including trigonometry, algebra, and basic probability).
|
Hardware/Software Required: |
A laptop and Internet connection
will generally suffice to complete homework.
|
Tentative Grading: |
Programming Assignments 30%
Labs 5%
Midterm Exam 1 27%
Midterm Exam 2 28%
Final Summative Experience 10%
Class Participation Activities* 5%2
|
≥ 93.00 A |
|73.00 - 76.99 C |
90.00 - 92.99 A- |
|70.00 - 72.99 C- |
87.00 - 89.99 B+ |
|67.00 - 69.99 D+ |
83.00 - 86.99 B |
|63.00 - 66.99 D |
80.00 - 82.99 B- |
|60.00 - 62.99 D- |
77.00 - 79.99 C+ |
|≤ 59.99 F |
Course Description:This course introduces students to the fundamental concepts of algorith-mic 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 pro duce 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 op portunity 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.
- Choose appropriate data and variable types to store specific kinds and ranges of information.
- Write, compile, and run a computer program.
- Use basic discrete mathematics to understand, describe, and solve computation problems.
- Understand the way computers represent and operate on data.
- Trace provided C and C++ code line-by-line to analyze what operations are being performed and describe what the program will output.
- Employ programming concepts: variables, control structures, loops, and arrays to develop programs that solve information problems.CSCI 102 Syllabus – January 8, 2024
- Interpret written program requirements and develop a programmatic solution to meet those requirements.
- Midterm Exam 1: Wednesday March 20, 3-4:50 PM in THH 101.
- Midterm Exam 2: Wednesday April 24, 3-4:50 PM in THH 101.
- Final Summative Experience: Monday, May 6, 6:30 PM as set by the university.
Important Note: Please make absolutely sure that you can make the above dates. No make-up exams can be offered for any reason whatsoever. Moreover, no online exams will be offered to on-campus students for any reason. If a student misses Midterm 1 due to a valid reason (e.g., documented medical or family emergency), the grade of Midterm 2 will be considered as the grade of Midterm 1. If a student misses Midterm 2 due to a valid reason, they will receive a grade of IN (Incomplete) and they must take the exam in the next semester with the students of that semester. Unexcused absence in an exam warrants a grade of zero.
- Required Textbook:
1. Frank Vahid and Roman Lysecky, Programming in C++ with ZyLabs. (Zy)
- Recommended Textbook:
1. Cay Horstmann, C++ for Everyone, 2nd Edition, Wiley; 2012. (Hort)
- The letter grade distribution table guarantees the minimum grade each student will receive based on their final score. When appropriate, relative performance measures will be used to assign the final grade, at the discretion of the instructor.
– Final grades are non-negotiable and are assigned at the discretion of the instructor. If you cannot accept this condition, you should not enroll in this course.
- Your three lowest grades in the Labs and two lowest scores in programming assignments will be dropped from the final grade. This policy gives a break to students who miss the deadline of a homework unintentionally or register late in the course or miss a homework because of poor time management or illness. Missing any of the homework assignments is not a good idea if you want to learn the concepts.
- The final grade is rounded up if it has a score that finishes in 0.50 or higher. The grade is rounded down if it has a decimal less than 0.50. For example, a final grade of 68.50 is rounded to 69, and a final grade of 68.30 is rounded to 68.
- *Class Participation Activities have up to 5% extra credit.
- Homework Policy4
– Class Participation Activities will be assigned at the beginning of the semester and should be completed by the due date that is specified on Zybook. Because of the nature of Participation Activities and because they are for extra credit, there will be no grace period for them and NO EXTENSION to their due dates under any circumstances.– Homework is assigned on an approximately weekly basis. All homework deadlines are on FRIDAYS, except those Fridays that are holidays, in which case the deadline is moved to the subsequent Monday. Three one-day grace periods can be used for each homework with 10% penalty per day. Absolutely no late homework will be accepted after the grace period. A late assignment results in a zero grade.– In case of documented illness or grave family situations, exceptions can be made to the late submission policy, mostly in the form of waiving the late penalty at the discretion of the instructor, given the fact that three lowest lab scores and two lowest homework scores will be dropped anyway for everyone.– Poor internet connection, failing to upload properly, broken laptops, or similar issues are NOT acceptable reasons for late submissions. If you want to make sure that you do not have such problems, submit homework eight hours earlier than the deadline. Please do not ask the instructor to make individual exceptions.– Students are encouraged to discuss homework problems with one another, but each student must do their own work and submit individual solutions written/ coded in their own hand. Copying the solutions or submitting identical homework sets is written evidence of cheating. The penalty ranges from F on the homework or exam, to an F in the course, to recommended expulsion.– Posting the homework assignments and their solutions to online forums or sharing them with other students is strictly prohibited and infringes the copyright of the instructor.Instances will be reported to USC officials as academic dishonesty for disciplinary action.
- Exam Policy
– Make-up Exams: No make-up exams will be given. If you cannot make the above dates due to a class schedule conflict or personal matter, you must drop the class. In the case of a required business trip or a medical or family emergency, a signed letter from your manager or counselor or physician has to be submitted. This letter must include the contact of your physician or counselor or manager.– An excused absence supported by documents in the first midterm can be made up by using the second midterm’s grade in lieu of the first midterm. An excused absence in the second midterm results in an IN (incomplete) grade.– Midterm and final exams will be closed book and notes.– All exams are cumulative, with considerable emphasis on material presented since the last exam.– The final summative experience will be assigned after Midterm 2. It is not an in-person exam, only a project that must be submitted before the deadline.
- Attendance:
– Students are required to attend all the lectures and discussion sessions and actively participate in class discussions. Use of cellphones and laptops for anything unrelated to programming in C++ is prohibited in the classroom.CSCI 102 Syllabus – January 8, 2024
- Textbooks are secondary to the lecture notes and homework assignments.
- Please use your USC email to register on Piazza and to contact the instructor and TAs.6
Jan 8th
Introduction (Zy 1.1-1.3)
Programming (general introduction)
Programming basics
Comments and whitespace
Introduction (Zy 1.4-1.7)
Errors and warnings
Computers and programs (general)
Computer tour
Language history
|
15th
Martin Luther King Day
|
22nd
Introduction (Zy 1.8-1.10)
Problem solving
Why programming?
Why whitespace matters?
Variables and Assignments (Zy 2.1-2.5) Variables and assignments (general)
Variables (int)
Identifiers
Arithmetic expressions (general)
Arithmetic expressions (int)
|
29th
Variables and Assignments (Zy 2.7-2.11)
Floating-point numbers (double)
Scientific notation for floating-point literals
Constant variables
Using math functions
Integer division and modulo
Variables and Assignments (Zy 2.12-2.15)
Type conversions
Binary
Characters
Strings
|
Feb 5th
Variables and Assignments (Zy 2.16-2.18)
Integer overflow
Numeric data types
Unsigned
Variables and Assignments (Zy 2.19-2.22)
Random numbers
Debugging
Auto
Style guidelines
|
12th
Conditional Statements (Zy 3.1-3.4)
If-else branches (general)
Detecting equal values with branches
Detecting ranges with ibranches (general)
Detecting ranges with branches
Conditional Statements (Zy 3.5-3.8)
Detecting ranges with Logical operators
Detecting ranges with gaps
Detecting multiple features with branches
Common branching errors
|
19th
President’s Day
|
26th
Conditional Statements (Zy 3.10-3.12)
Order of evaluation
Switch statements
Boolean data type
Conditional Statements (Zy 3.13-3.16)
String comparisons
String access operations
Character operations
More string operations
|
Mar 4th
Conditional Statements (Zy 3.17-3.19)
Conditional expressions
Floating-point comparison
Short circuit evaluation
Loops (Zy 4.1-4.3)
Loops (general)
While loops
More while examples
|
11th
Spring Recess
|
18th
Loops (Zy 4.4-4.6)
For loops
More for loop examples
Loops and strings
Loops (Zy 4.7-4.9)
Nested loops
Developing programs incrementally
Break and continue
|
25th
Midterm Review*
Loops (Zy 4.10-4.11)
Variable name scope
Enumerations
|
Apr 1st
Arrays & Vectors (Zy 5.1-5.5)
Array/vector concept (general)
Vectors
Array/vector iteration drill
Iterating through vectors
Multiple vectors
Arrays & Vectors (Zy 5.6-5.9)
Vector resize Vector push-back
Loop-modifying or copying/comparing vectors
Swapping two variables (General)
|
8th
Arrays & Vectors (5.11-5.15)
Arrays vs. vectors
Two-dimensional arrays
Char arrays / C strings
String library functions
Char library functions: ctype
User-Defined Functions (Zy 6.1-6.6)
User-defined function basics
Print functions
Reasons for defining functions
Writing mathematical functions
Functions with conditional statements/loops
|
15th
User Defined Functions (Zy 6.7-6.10)
Unit testing (functions)
How functions work
Functions: Common errors
Pass by reference
User-Defined Functions (Zy 6.11-6.14)
Functions with string/vector parameters
Functions with C string parameters
Scope of variable/function definitions
Default parameter values
|
22nd
User-Defined Functions (Zy 6.15-6.18)
Function name overloading
Parameter error checking
Preprocessor and include
Separate files
|
Jan 12th |
19th |
26th |
Homework 1,2 & Lab 1,2 Due (Moved to Monday Jan 29, but no grace period after that.) |
Feb 2nd Homework 3 & Lab 3 Due |
9th Homework 4 & Lab 4 Due |
16th Homework 5 & Lab 5 Due |
23rd Homework 6 & Lab 6 Due |
Mar 2nd Homework 7 & Lab 7 Due |
9th Homework 8 & Lab 8 Due |
16th Spring Recess |
23rd Homework 9 & Lab 9 Due |
30th Homework 10 & Lab 10 Due |
Apr 6th Homework 11 & Lab 11 Due |
13th Homework 12 & Lab 12 Due |
20th Homework 13 & Lab 13 Due |
27th Homework 14 & Lab 14 DueCSCI 102 Syllabus – January 8, 2024 |