ECS 036A: Programming & Problem Solving

Subject
ECS 036A
Title
Programming & Problem Solving
Status
Active
Units
4.0
Effective Term
2026 Fall Quarter
Learning Activities
Lecture - 3.0 hours
Laboratory - 3.0 hours
Description
Programming in modern C++ for students with prior experience. Fundamental programming constructs, abstraction using functions and basic classes, algorithmic design, and debugging. Emphasis on good programming style and effective use of UNIX-based development tools. Only 2 units of credit to students who have completed ECS 032A or ECS 032AV; no credit to students who have completed ECS 032B, ECS 032C, ECS 034, ECS 040 or ECS 060. GE: SE.
Prerequisites
ECS 032A C- or better or ECS 032AV C- or better; or must satisfy computer science placement exam; prior experience with basic programming concepts (variable, loops, conditional statements) required.
Credit Limitation
Only 2 units of credit to students who have completed ECS 032A or ECS 032AV; no credit to students who have completed ECS 032B, ECS 032C, ECS 034, ECS 040 or ECS 060.
Enrollment Restrictions
Pass One open to Computer Science, Computer Science & Engineering, and Computer Engineering majors only; Pass Two open to Computer Science, Computer Science & Engineering, Computer Engineering, Cognitive Science, Applied Physics, Statistics, and Psychology majors only.

Summary of Course Content:

Programming fundamentals in modern C++ ○ Program structure, compilation, and execution 

  • Built-in scalar types and type system concepts  
  • Expressions, assignment, and basic input/output 
  • Control flow: conditionals and loops 
  • Functions, parameters, return values, and scope 
  • Basic Standard Library containers  
  • Introduction to structures and simple classes  
  • References and pointers  
  • Memory and resource management
  • Interaction with files

Algorithmic problem solving 

  • Designing small algorithms from specifications  
  • Reasoning about correctness and efficiency  
  • Introduction to linear data structures and recursion

Basic UNIX environment 

  • Navigating the filesystem 
  • Compiling and running programs from the terminal 
  • Using basic command-line tools, redirection, and pipes

Software engineering practices  

  • Debugging with tools such as GDB 
  • Basic build system such as Makefile 
  • Writing clear, readable programs  
  • Testing and incremental development 
  • Using standard libraries effectively 

Illustrative Reading: 

  • Stroustrup, Bjarne, Programming: Principles and Practice Using C++, 3rd Edition, Addison-Wesley, 2024. 
  • Shotts, William, The Linux Command Line: A Complete Introduction, No Starch Press, 2026.

Potential Course Overlap:

ECS 32A and ECS 36A/ECS 30 cover programming, but in ECS 36A it is covered more quickly and larger programs are written. ECS 36A also introduces UNIX.

Course Category