ECS 036A: Programming & Problem Solving

Subject
ECS 036A
Title
Programming & Problem Solving
Status
Active
Units
4.0
Effective Term
2020 Spring Quarter
Learning Activities
Lecture - 3.0 hours
Discussion - 1.0 hours
Description
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, ECS 032C, ECS 034, ECS 040, or ECS 060. GE Prior to Fall 2011: SciEng. GE: SE.
Prerequisites
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, 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, Applied Physics, Cognitive Science, Statistics, and Psychology 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 C (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 C, https://www.zybooks.com/catalog/programming-in-c-2/

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

GE3
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