Skip to content Skip to navigation

Software Methodology

01:198:213

This course teaches essential principles, techniques, tools, and methods used to develop large software programs in Java. These include object-oriented programming and design, Unified Modeling Language (UML), testing and debugging, using and documenting APIs, asynchronous (event-driven) programming in a Graphical Use Interface (GUI) framework, code maintenance and version management using CVS, software development using Eclipse, introduction to building software on mobile platforms, introduction to multithreading and network programming, object persistence,

Credits: 
4
Prerequisite: 
- A grade below a "C" in a prerequisite course will not satisfy that prerequisite requirement.
Semesters: 
Spring
Topics: 
   - Inheritance, interfaces, abstract classes, polymorphism
   - Unified Modeling Language (UML)
   - Essential design patterns, including Singleton, Model-View-Controller (MVC),
     Template Method, State
   - Black-box unit testing, debugging, developing large applications in Eclipse
   - Object persistence, serialization
   - Code management using CVS
   - Designing and implementing GUIs using Java Swing and AWT
   - Frames, dialogs, panels, widgets, tables, layouts, colors, fonts, drawing, painting
   - The Swing MVC architecture and working with data models
   - Event handling
   - Introduction to software development on mobile platforms
   - Introduction to multithreading
   - Introduction to network programming
Expected Work: 

Regular homework assignments, team projects.

Exams: 
Final
Learning Goals: 
Computer Science majors ...
  • will be prepared to contribute to a rapidly changing field by acquiring a thorough grounding in the core principles and foundations of computer science (e.g., techniques of program design, creation, and testing; key aspects of computer hardware; algorithmic principles).
  • will acquire a deeper understanding on (elective) topics of more specialized interest, and be able to critically review, assess, and communicate current developments in the field.
  • will be prepared for the next step in their careers, for example, by having done a research project (for those headed to graduate school), a programming project (for those going into the software industry), or some sort of business plan (for those going into startups).