ECS 161: Modern Programming Tools

ECS 161
Modern Programming Tools
Effective Term
2019 Winter Quarter
Learning Activities
Lecture: 3 hours
Discussion: 1 hour
Concepts and practice of collaborative software development using modern software tools. GE: SE.
(ECS 040 or ECS 032B or ECS 036B)
Enrollment Restrictions
Pass One open to Computer Science and Computer Science Engineering Majors only.

Summary of Course Content:
Students will learn concepts of modern software development, including version control, configuration management, build tools, test tools, continuous integration, and debugging. Concepts will be presented in lectures, and practical instruction relevant to projects and concepts will be provided during the laboratories. TAs and instructor will guide students through the installation of tools, and the embodiment of the concepts covered in the lectures, within the tools. Students will also be exposed to development with modern application frameworks. Topics will include:

  1. Integrated Development Environments
    1. Browsing, formatting
    2. Compiling, running, basic debugging
    3. Basic project configuration
    4. Plugin management
  2. Version Control
    1. History and purpose of version control
    2. Content-based naming
    3. Hash Trees and content-based versioning
    4. Distributed development practices
  3. Build, Configuration, and Integration
    1. Build procedures: Make, Ant
    2. Configuration management: Maven
    3. Cloud-based approaches: Jenkins
    4. Cloud-based integration testing: Travis
  4. Advanced Debugging
    1. Breakpoints, Tracepoints
    2. Slicing
    3. Asserts and invariants
    4. Delta debugging
  5. The API Zoo
    1. Varieties of APIs: client-side, server-side, containers.
    2. Learning to navigate APIs: a hands-on case study.

Illustrative Reading
No required textbook. Online documents, and other resources, including: Version Control with Git By, Loeliger & McCollough (2012) Why Programs Fail, by Zeller (2009) Microsoft Azure Documentation.

Potential Course Overlap
Some of this material is taught on an “as-needed” basis in several other courses, including 30, 40, and 160. This course will provide a unified exposure for students to a lot of practical concepts and tools that will serve them in other programming-intensive courses, and also for internships.

Final Exam
Yes Final Exam

Justification for No Final Exam
Final exam

Course Category