Syllabus

Class Information

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.

  1. Choose appropriate data and variable types to store specific kinds and ranges of information.
  2. Understand how computers represent data and operate on it.
  3. 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.
  4. Employ programming concepts (variables, control structures, loops, arrays, and structs) to write programs that solve data-processing problems.
  5. Decompose C++ programs into subtasks/functions that use appropriate argument passing techniques and possibly recursion.
  6. Write programs that use file I/O in C++.
  7. 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

Proficiency in high school math (including trigonometry, algebra, and basic probability).

Learning Materials and Resources

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.

Letter grades will be determined using the following scale.

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

Exams

Grading Timeline

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.

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