• Instructor Profile: Chang, Lily
  • Prerequisite Information:

    01:198:213 - Software Methodology, AND  one of the following

    01:198:314 - Principles of Programming Languages,

    01:198:336 - Principles of Information and Data Management,

    01:198:352 - Internet Technology,

    01:198:416 - Operating Systems Design

    (or permission of instructor)

    † This course is available for CS Graduate degree credit.

    - A grade below a "C" in a prerequisite course will not satisfy that prerequisite requirement.

  • Course Links: 01:198:213 - Software Methodology, 01:198:314 - Principles of Programming Languages, 01:198:336 - Principles of Information and Data Management, 01:198:352 - Internet Technology, 01:198:416 - Operating Systems Design
  • Topics:

    Software life cycle.  Requirements analysis and specification. Model-based software development.
    Software architectural design, and the design of its laws.
    Specification of software components and their interaction.
    Assertions, testing, and debugging.  Elementary project
    planning and estimation.  Some state of the art material.

    Specific techniques used in the above include software reuse through
    libraries (e.g., Java Swing, data structure libraries), CASE tools
    (e.g., Eclipse), notations (e.g., UML), access-control techniques for
    distributed systems (LGI).

  • Expected Work: The team project includes demonstrations of protoype and findal code, plus documents for specification, architectural design, detailed design, and test plan.
  • Exams: Possibly a take-home exam/assignments, concerning material covered in lectures.
  • 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).