Instructor’s Overview
I designed Intermediate Programming for students who know the basics of programming but haven’t yet had much practice.
The course provides the opportunity to gain experience, beyond what was available during Computer Science 1 & 2, and to expand the set of mental and technological tools ready to be used.
I have also included practical tips for becoming a better programmer, acquired over decades of experience in industry and the study of programming best practices.
Participants are expected to have a good working knowledge of the Java programming language and be willing to try out new approaches and techniques.
Catalog Description
This course provides the opportunity and support for students who wish to solidify and extend the computer programming knowledge and abilities acquired in Computer Science l & 2 (CS 1050 & CS 2050). Topics covered include tools, techniques, and approaches to help tackle the programming tasks of domain analysis, program design, coding, building, testing, and principled debugging.
Topics
The Context of Programming
- Programming Objectives
- Constraints on Programs and Programmers
- Automated Tools
Domain Analysis, Program Design, and Coding
- ...in the Imperative Paradigm
- ...in the Functional Paradigm
- ...in the OOA/OOD Paradigm
- Using Java for These Three Paradigms
Testing
- Unit Testing
- Regression Testing
- Test-First Development
Debugging
- Principled Debugging
- Anti-Bugging