Syllabus for Roster(s):

  • 13F CS 4240-001 (ENGR)
In the UVaCollab course site:   CS4240 (F13)

CS4240 Syllabus

CS4240: Principles of SW Design

Dr. Tom Horton

   Email: horton.uva@gmail.com. Rice Hall 402.    982-2217.
   Office hours: TBA on Collab site.

Class website: See Collab site.

Course Description:

This course focuses on techniques for software design in the development of large and complex software systems. Topics will include software architecture, modeling (including UML), object-oriented design patterns, and processes for carrying out analysis and design. More advanced or recent developments may be included at the instructor's discretion. The course will balance an emphasis on design principles with an understanding of how to apply techniques and methods to create successful software systems.

Prerequisite: CS 2150 with a C- or better.  (Or at least two semesters experience in OO programming, preferably in Java, with an understanding of inheritance, interfaces and polymorphism, plus understanding of basic data structures and libraries that support them. Also basic UNIX experience, including bash or a similar shell.)

Textbook and Readings:

  • You don’t have to buy a book as long as you’re able and willing to read chapters etc. from on-line books (in the UVa library or the class website).
  • Design Patterns Explained: A New Perspective on Object-Oriented Design (2nd edn). by Alan Shalloway and James Trott.  Available for free access on-line through the UVa library:
    http://proquest.safaribooksonline.com/book/software-engineering-and-development/patterns/0321247140
  • Other book chapters and on-line readings.

Grading:

  • Exams: 50% total as follows:
    • Exam 1: 20%, Thursday, Oct. 3
    • Exam 2: 20%, Thursday, Nov. 14
    • Final “Half Exam”: 10%. (Mon., Dec. 9, 9am-noon).
  • Homeworks/projects:  50% total.  Details will be determined, but possibly:
  • Homeworks: 39%.  A set of 3 to 5, possibly done in pairs.
  • Project: 20%.  Groups of three students.
  • Project structure will be determined, and may affect how homeworks are structured.
  • Class participation. Up to a 5% penalty on the final grade total.

Nature of Homeworks:

  • The first one may be a code analysis of an existing system.
  • At least one will require you to create UML models and other design representations.
  • Some will certainly be about design patterns.
  • One or two may require coding in Java or Python and require multi-threaded programming
  • One may require you to learn a bit of server-side Javascript (Node.js)
  • I’ll ask you to tell me about your interests before giving you exact assignments.

Course Topics Etc:

  • Context for design
  • Design principles
    • Modularity, etc.
    • Functional design
    • (Briefly) Non-OO design
  • Code Smells, Refactoring
  • Object-oriented design
  • OO Analysis
  • OO modeling:  Unified Modeling Language (UML)
  • Abstraction, Inheritance, Interfaces
  • Packages
  • Libraries, Frameworks
  • Design Patterns (lots on this)
  • Higher-level, system level
  • Plug-ins (Eclipse, Firefox, etc.)
  • Software Architecture
  • Concurrency, Tasks and Multithreaded Programs
  • Non-OO design  (C, web languages)
  • Node.js, server-side JavaScript and client-server design
  • Multi-threaded and Concurrent systems
  • Architecture of Web-based frameworks
  • Case studies: code examples
  • Possible Advanced Topics:

This semester the course may include some coverage and emphasis on:

·      Professional SW Engineering Skills

·      SW Development Techniques

o   Unit tests.  JUnit.  Test-first development.

o   Use of libraries. E.g. log4j, java.concurrent, Node.js, others

o   Version control. Git, GitHub

·      Less emphasis on building SW according to a process (a la CS3240)

Honor Policy and LNEC Information:

            The UVa Honor Policy is in place for this course. See each assignment for rules on acceptable collaborations.

            Violations will certainly result in a zero on the assignments, and if appropriate will be submitted to the Honors Committee.

            Also, students registered with the LNEC who get special considerations should speak to me within the first week of class.