ECS 036A: Programming & Problem Solving

ECS 036A
Programming & Problem Solving
Effective Term
2020 Spring Quarter
Learning Activities
Lecture - 3.0 hours
Discussion - 1.0 hours
Computers and computer programming for students with some prior experience, algorithm design, and debugging. Good programming style. Use of basic UNIX tools. Only 2 units if completed ECS 032A; no credit for students who have completed ECS 032B or previous ECS 030. GE Prior to Fall 2011: SciEng. GE: SE.
ECS 032A C- or better or ECS 010 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 if completed ECS 032A; no credit for students who have completed ECS 032B or previous ECS 030.
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, Applied Physics, and Cognitive Science majors only.
  1. The UNIX Environment.
    1. First-level understanding of the nature of UNIX processes and job control.
    2. UNIX hierarchical file system.
    3. UNIX utilities, e.g., find, grep, sort, uniq, head.
    4. Shell script understanding.
  2. Algorithms: general concept, development of efficient algorithms.
  3. Programming in Python (or an alternative programming language).
    1. Review of syntax of simple statements, arithmetic and boolean expressions, assignment statements, input and output statements.
    2. Data types: lists, tuples, dictionaries, classes.
    3. Functions: general concept, declaration and calls, parameters, function call stacks.
    4. Recursion.
    5. Use of an Integrated Development Environment (IDE).
  4. Software engineering: running, debugging, testing programs, building quality program using software development tools
    1. Practice writing larger programs and finding good abstraction boundaries
    2. Use of libraries and importing.
    3. Debugging techniques, especially using debugging aids such as pdb/rpdb.

Illustrative Reading
zyBooks, Programming in Python 3

Shotts, William E., Jr., The Linux Command Line: A Complete Introduction. No Starch Press, 2012.

Science & Engineering

Overlap Statment
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