Discussion: 1 hour
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:
- Integrated Development Environments
- Browsing, formatting
- Compiling, running, basic debugging
- Basic project configuration
- Plugin management
- Version Control
- History and purpose of version control
- Content-based naming
- Hash Trees and content-based versioning
- Distributed development practices
- Build, Configuration, and Integration
- Build procedures: Make, Ant
- Configuration management: Maven
- Cloud-based approaches: Jenkins
- Cloud-based integration testing: Travis
- Advanced Debugging
- Breakpoints, Tracepoints
- Asserts and invariants
- Delta debugging
- The API Zoo
- Varieties of APIs: client-side, server-side, containers.
- Learning to navigate APIs: a hands-on case study.
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.
Yes Final Exam
Justification for No Final Exam