Syllabus
Class Information
- Class Name: Introduction to Computer Programming for Electrical Engineers (EE 155)
- Units: 4.0
- Session: Fall 2026
- Instructor: Marco Paolieri (paolieri@usc.edu)
- Teaching Assistants: Stavros Damianakis, Jike Zhong
- Office Hours: check on the class website
- Lectures: Mon/Wed 4-5:50pm (GFS-106)
- Labs: Fri 2-4:50pm (GFS-106)
- Midterm 1: Fri Oct 2, 2-4:50pm (GFS-106)
- Midterm 2: Fri Nov 6, 2-4:50pm (GFS-106)
- Final Exam: Wed Dec 9, 4:30-6:30pm (TBD)
Course Description
This course introduces students to the fundamental concepts of computer programming and algorithmic thinking. No prior programming experience is necessary: the mathematics and basic constructs of programming languages are presented in class, together with the problem-solving techniques required to analyze a problem and write an algorithm. Concepts include data representation on a computer (integers, floating-point numbers, strings), control structures (conditional and iterative structures), functions, recursion, arrays and composite data types, basic algorithm analysis, file I/O. These concepts are presented through the introduction of the C++ programming language, to provide a solid foundation for other EE classes.
Weekly labs (on Fridays) will provide the opportunity for students to review and practice the concepts presented in class, by solving programming assignments inspired by different problems of engineering.
By the end of this course, students will be able to analyze problems requiring data processing with conditional/iterative logic, to implement their solutions using C++, and to reason about the execution of their programs.
The fundamental concepts and skills learned in this class will serve as a basis for other courses of the EE program, including EE 109 (Introduction to Embedded Systems), EE 250 (Distributed Systems for the Internet of Things), EE 355 (Software Design for Electrical Engineers), EE 451 (Parallel and Distributed Computation), EE 455 (Introduction to Programming Systems Design), EE 459 (Embedded Systems Design Laboratory), EE 460 (Machine Learning for Engineers), EE 541 (A Computational Introduction to Deep Learning).
Learning Objectives
Below are the specific, measurable skills a student will demonstrate by the end of the course. These objectives will be taught and assessed in the course and are aligned with the assignments, exams, and learning materials.
- Choose appropriate data and variable types to store specific kinds and ranges of information.
- Understand how computers represent data and operate on it.
- Reason about the line-by-line execution of C++ programs, to analyze what operations are being performed and to describe what the program will output.
- Employ programming concepts (variables, control structures, loops, arrays, and structs) to write programs that solve data-processing problems.
- Decompose C++ programs into subtasks/functions that use appropriate argument passing techniques and possibly recursion.
- Write programs that use file I/O in C++.
- Interpret written program requirements and develop a computational solution to meet those requirements, with a specific focus on engineering problems.
Prerequisites
None
Co-Requisites
None
Recommended Preparation
Proficiency in high school math (including trigonometry, algebra, and basic probability).
Learning Materials and Resources
-
The required textbook for the course is Brief C++: Late Objects by Cay S. Horstmann (Wiley, 2020, 3rd edition, ISBN 978-1119739708). We recommend that you read the sections listed on the “Schedule section” of our class website usc-ee155.github.io.
-
For algorithm analysis we will reference Chapter 4 of Introduction to Programming in Java: An Interdisciplinary Approach by Robert Sedgewick and Kevin Wayne (Wiley, 2017, 2nd edition, ISBN 978-0672337840).
-
For C++ data structures, we will reference Chapter 12 of A Tour of C++ by Bjarne Stroustrup (Wiley, 2022, 3rd edition, ISBN 978-0136816485).
-
-
Access to the slides used by the instructor will be provided at the beginning of each lecture, from the “Slides section” of our class website usc-ee155.github.io.
-
EdStem will be used for Q&A and announcements related to the class. It will also be used to provide a programming environment for the exercises (solved during lecture) and assignments (solved during labs).
Technological Proficiency and Hardware/Software Required
A working laptop able to access the Internet is required to complete exercises during lectures and labs. The laptop will be used to access EdStem through a web interface; other than a web browser, no particular software/OS is required. Loaner laptops may be available via the Laptop Loaner Program of the USC Computing Center.
Make sure that your laptop is fully charged before coming to class.
Attendance Policy
In-person attendance is the only supported option for this course.
While attending every class is not required, exercises and assignments completed during lectures and labs contribute to your overall score, which is used to determine the final letter grade.
The grading policy outlined below makes sure that, even if you miss some classes because of an illness or emergency, you will still have the opportunity to obtain all the points available from lectures and labs.
Please note that, after missing too many classes, you may not be able to obtain an A. More importantly, exercises and assignments are designed to prepare you for the exams (two midterms and a final exam); without completing these problems, your scores on the exams may be lower.
Recording Policy
Lectures are not recorded.
Please note that USC policies prohibit recording and distribution of course content by the students without the express permission of the instructor and announcement to the rest of the class, unless explicitly allowed by accommodations from the Office of Student Accessibility Services (OSAS). The restriction applies to slides, audio/video recordings, exams, and message exchanges, as noted in the USC Student Handbook (page 13).
Grading Breakdown and Letter Grade Policy
Class scores are calculated as follows.
- 4% of class score: Exercises (100 points).
- Each of our 27 lectures provides 5 points through in-class exercises.
- With a full score on the submitted exercises, 20 lectures already grant the 100 points available. This allows full credit even when students miss some lectures due to emergencies, or when they achieve lower scores on some submissions.
- 6% of class score: Assignments (100 points).
- We will use 7 of our 11 labs for in-class assignments, each worth 20 points.
- With a full score on the submitted assignments, 5 assignments already grant the 100 points available. This allows full credit even when students miss some labs due to emergencies, or when they achieve lower scores on some submissions.
- 20% of class score: Worst of the two midterms (100 points).
- 30% of class score: Best of the two midterms (100 points).
- 40% of class score: Final exam (100 points).
Letter grades will be determined using the following scale.
- Score ⇒ A
- Score ⇒ A-
- Score ⇒ B+
- Score ⇒ B
- Score ⇒ B-
- Score ⇒ C+
- Score ⇒ C
- Score ⇒ C-
- Score ⇒ D+
- Score ⇒ D
- Score ⇒ D-
- Score ⇒ F
If the overall grade distribution (including all exams and assignments) is worse than expected, the cutoffs may be shifted downward; individual tests will not be scaled.
Programming Exercises and Assignments
-
Exercises: During each of our 27 scheduled lectures, we will take short breaks to solve simple exercises using EdStem. The exercises of a lecture are worth 5 points. The grading policy of different exercises will be outlined during each lecture; submissions are made through EdStem.
-
Assignments: During 7 of our 11 scheduled labs, we will solve longer programming assignments, also using EdStem. The assignments solved during labs are worth 20 points each. The grading policy of different assignments will be outlined during labs; submissions are made through EdStem.
-
While solving exercises and assignments during class and labs, you will be able to ask the instructor or TAs for help.
-
Both exercises and assignments are individual: you must solve them by yourself, without the help of other students or AI tools.
-
You can use the material provided in class to solve the exercises and assignments (problem instructions, lecture slides, textbook).
-
Submissions will be accepted only in class, before deadlines announced for each programming problem.
Exams
-
There will be two midterm exams and one final exam.
-
Midterm Exams: Midterms will be held during the lab section (Fri 2:00-4:50pm PT in GFS-106), on October 2 and November 6, 2026. Dates and room may change in exceptional cases; changes will be communicated on EdStem. Always check with the instructor as the listed exam date approaches to confirm the date and time; you are responsible for finding out when and where the exams will be held. Make-up exams will be given for midterms if you have a valid excuse (e.g., serious illness or accident, but proof will be required).
-
Final Exam: The final exam will be held Wed December 9, 4:30-6:30pm (the room will be announced on EdStem later in the semester). Per the university policy, make-up exams are not allowed for final exams unless a student has 3 finals or more scheduled for the same day, or other finals scheduled for the same day and time.
-
Exam Style: Exams are designed to test not only your retention of the material, but also your ability to apply it to design and analyze new problems. In this way, your mastery and depth of understanding of the course content will be assessed. Some portion of the exam will contain general knowledge questions in the form of fill-in/multiple choice. However, the majority of points will come from code design/analysis problems using skills learned in class. This is where, by struggling with the exercises and assignments until you truly understand and feel comfortable with each concept, you will greatly improve your preparation for the exams. Students who simply “get the homework done” without reviewing and understanding each facet often struggle on the exams.
-
Exam Policies:
- Exams will be on paper only.
- No calculators, smartphones, laptops, or other electronic devices will be allowed.
- A cheat sheet will be provided with the exam. No additional resources (e.g., books or notes) are allowed.
-
Academic Accommodations: If you have academic accommodations provided by OSAS, please inform your instructor at least 2 weeks before the exam to determine when and where you will take the exam.
Grading Timeline
-
Exercises and assignments will be graded within 3 days. Grades will be available on EdStem, where it will be possible to ask for regrades using private posts.
-
Exams will be graded within 1 week. Graded exams will be available on Gradescope, where it will be possible to ask for regrades.
-
Regrade requests can be made within 1 week.
Course Schedule
A detailed course calendar with readings for each lecture and exam dates is provided on the “Schedule section” of our class website usc-ee155.github.io.
IMPORTANT: In addition to in-class contact hours, all courses must also meet a minimum standard for out-of-class time, which accounts for time students spend on assignments, readings, writing, and other academic activities. For each unit of in-class contact time, the university expects two hours of out-of-class student work per week over a semester.
Academic Honesty Supplement and Use of AI Tools
The following supplements the university academic honesty guidelines for this course.
-
You are explicitly prohibited from collaborating with other students on the assignments and in-class exercises. No form of collaboration is allowed (not even the discussion of high-level concepts).
-
You are explicitly prohibited from seeking help outside of course resources (e.g., from AI tools) for the assignments and in-class exercises. The following is an exhaustive list of “course resources”:
- The instructor and TAs.
- The textbook.
- The course website and EdStem labs for this semester.
- The lecture slides.
-
The previous bullet point means that if you seek information towards solving part of a programming assignment online or through AI tools, find it, and use it, it may result in an academic honesty violation.
-
While modern programming practice in industry uses generative AI, it is critical that you gain the skills necessary to (1) solve problems that AI currently does not, (2) understand generated code well enough to know when it is wrong, and (3) fix that code. Evidence and feedback from industry partners and other teaching institutions indicate that learning programming is still best done through repeated practice (to build “muscle memory”) and should involve some amount of coding “from scratch.” Since exams will not allow the use of AI tools, it is truly in your best interest to avoid AI tools when solving exercises and assignments. Instead, we encourage the use of AI tools outside in-class exercises and assignments, for the following:
- To generate additional practice problems;
- To review your code and to consider alternative or better solutions;
- To get information about programming topics.
-
Violations of this code will result in a referral to the Office of Academic Integrity. The USC policy is that any violation shall result in an F in the course.
Students and Disability Accommodations
USC welcomes students with disabilities into its 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, since accommodations are not retroactive. More information can be found at https://osas.usc.edu. You may contact OSAS at (213) 740-0776 or via email at osasfrontdesk@usc.edu.
Student Financial Aid and Satisfactory Academic Progress
To be eligible for certain kinds of financial aid, students are required to maintain Satisfactory Academic Progress (SAP) toward their degree objectives. Visit the Financial Aid Office webpage for information on the undergraduate and graduate SAP eligibility requirements and on the appeals process.
Support Systems and USC Emergency Information
-
Counseling and Mental Health: (213) 740-9355 (WELL) (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 consists 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. -
CARE-SC: Confidential Advocacy, Resources, and Education Support Center: (213) 740-9355 (WELL) (24/7 on call)
Confidential advocates, prevention educators, and professional counseling teams work to promote a universal culture of consent, and prevent and respond to gender- and power-based harm. Services available to all USC students at no cost. -
Office of Civil Rights Compliance: (213) 740-5086
Information about how to get help or help someone affected by harassment, discrimination, or retaliation on the basis of a protected characteristic, rights of protected classes, reporting options, and additional resources for students, faculty, staff, visitors, and applicants. -
Reporting Incidents of Bias or Harassment: (213) 740-2500
Avenue to report incidents of bias, hate crimes, and microaggressions to the Office for Equity, Equal Opportunity, and Title IX 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. -
USC Department of Public Safety
- For 24 hour emergency assistance or to report a crime: (213) 740-4321 (UPC) / (323) 442-1000 (HSC).
- For 24 hour non-emergency assistance or information: (213) 740-6000 (UPC) / (323) 442-1200 (HSC).
-
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 otfp@med.usc.edu
Confidential Lifestyle Redesign services for USC students to support health promoting habits and routines that enhance quality of life and academic performance.