Course CSE219
Title Computer Science III
Credits 3
Course Coordinator

C. R. Ramakrishnan


Development of the basic concepts and techniques learned in CSE 114 Computer Science I and CSE 214 Computer Science II into practical programming skills that include a systematic approach to program design, coding, testing, and debugging. Application of these skills to the construction of robust programs of 1000 to 2000 lines of source code. Use of programming environments and tools to aid in the software development process.

Prerequisite C or higher in CSE 214 and CSE major or ECE major
Course Outcomes
  • An ability to use current design principles to systematically design, code, debug, and test programs of about two thousand lines of code.
  • An understanding the importance of programming style and modularity to the construction and evolution of robust software.
  • An ability to apply techniques of object-oriented programming in the context of large-scale programs.
  • An ability to use programming tools such as syntax-directed editors, debuggers, execution profilers, documentation generators, and revision-control systems.

  • Head First Object Oriented Design and Analysis (on-line version) by Brett McLaughlin, Gary Pollice, David West.
  • Head First Design PatternsHead First Design Patterns (on-line version) by Eric T Freeman, Elisabeth Robson, Bert Bates, Kathy Sierra
  • Core Java I Core Java Volume 1 - Fundamentals, 8th Edition (on-line version) by Cay Horstmann.

Major Topics Covered in Course
  • Programming style and its impact on readability, reliability, maintainability, and portability.
  • Decomposing problems into modular designs with simple, narrow interfaces. Object-oriented design. 
  • Selecting appropriate algorithms and data structures. Systematic testing and debugging. Improving program performance. 
  • Reusing code, including external libraries designed and built by others. 
  • Making effective use of a programming environment, including:  Syntax-directed editor, Source code management tools, Build tools, Debugging tools, profiling tools

Laboratory Projects

The course typically tries to use a "running project" as a concrete vehicle for students to practice concepts presented in the lecture and in the Textbook. For Fall 2003, the project was an airline reservation application that would permit the user to make reservations and to determine prices of trips.

  • HW1 (2 weeks): Review Java programming and data structures from CSE 114 and 214. Become comfortable with writing code in the course software development environment. Prepare some initial groundwork for the larger course projects.
  • HW2 (1.5 weeks): Review your design for HW1 to see what you could have done better, design the classes needed for a larger airline reservation system, use UML to graphically describe your design, document your design carefully.
  • HW3 (1.5 weeks): Develop your debugging technique by learning to use the debugger in JBuilder or the JSwat debugger, learn how to read complex code, determine the purpose of each component of the code, and document it using a standard documentation format.
  • HW4 (2.5 weeks): Review your design that you submitted for HW2 based on your TA's comments to see what you could have done better. Implement the second version of the airline reservation system based on the specification given in HW2 and the design you came up with, along with any changes that may be suggested by the feedback from HW2. Document your implementation carefully, including an explanation of why your implementation has changed from your initial design, if applicable. Perform unit testing on a component of your implementation.
  • HW5 (1.5 weeks): Review your design for HW2/4 to see what you could have done better. Design the classes needed for a larger airline reservation system. Use UML to graphically describe your design. Demonstrate the use of several design patterns. Learn how to use Swing GUI components. Learn how to work with the event-driven computational model. Document your design carefully.
  • HW6 (3.5 weeks): Review your design for HW5 to see what you could have done better. Code a large program that includes a graphical user-interface using Swing and AWT. Write your code in a readable manner based on current Java style guidelines. Document your implementation carefully and completely. Use CVS to maintain a repository for your code development.

Course Webpage