ECS 034: Software Development in UNIX & C/C++

ECS 034
Software Development in UNIX & C/C++
Effective Term
2018 Fall Quarter
Learning Activities
Lecture - 3.0 hours
Discussion - 1.0 hours
Extensive Problem Solving
UNIX Operating system tools and programming environment. Methods for debugging and verification. Principles of C and object-oriented programming in C++. Extensive programming. Only 3 units of credit for students who have previously taken ECS 036B. GE Prior to Fall 2011: SciEng. GE: SE.
ECS 032B C- or better; or Consent of Instructor.
Credit Limitation
Only 3 units of credit for students who have previously taken ECS 036B.

Summary of Course Content

  • The UNIX Environment
    • First-level understanding of the nature of UNIX processes and job control
    • UNIX hierarchical file system
    • UNIX utilities, e.g., find, grep, sort, uniq, head
    • Shell scripts
  • Software engineering: running, debugging, testing programs, building quality program using software development tools
    • Debugging techniques, especially using UNIX debugging aids such as gdb/ddd
    • Program development as multi-file modules, and use of the UNIX “make” program to organize them
    • Integrated Development Environments
    • Version Control
    • Unit Testing (e.g. Google Test)
    • Program development using third party libraries
  • Programming in C
    • Basic syntax differences of C other languages, including Python
    • Data structures: single and multidimensional arrays; character strings; structs Use of system files such as library and “include” files
    • Pointers and dynamic memory allocation
    • Function pointers and inversion of control.
  • C++ Topics Pointer manipulation including dynamic memory allocation
    • Linked lists
    • Advanced object-oriented programming: Polymorphism and operator overloading
    • Templates and the Standard Template Library
    • C++11
  • Analysis of Graph Algorithms
    • Critical path analysis, depth-first search, shortest path, minimum spanning tree, and network flow

Illustrative Reading
C++ Primer, Fifth Edition, by Stanley B. Lippman, Josee Ltajoie, and Barbara E. Moo.

1. Getting Started. 2. Variables and Basic Types. 3. Strings, Vectors, and Arrays. 4. Expressions. 5. Statements. 6. Functions. 7. Classes. 8. The IO Library. 9. Sequential Containers. 10. Generic Algorithms. 11. Associative Containers. 12. Dynamic Memory. 13. Copy Control. 14. Overloaded Operations and Conversions. 15. Object-Oriented Programming. 16. Templates and Generic Programming. 17. Specialized Library Facilities. 18. Tools for Large Programs. 19. Specialized Tools and Techniques

Science & Engineering

This course is a non-major analog of ECS 036B and will overlap significantly in concepts. ECS 34 introduces UNIX and analysis of graph algorithms, which is not covered in ECS 036B.


Course Category