CIS501 Spring 2015

Syllabus for CIS501: Software Architecture

Lecture: TU 1:00-2:15pm, Nichols Hall, room 21

Instructor: David Schmidt
219A Nichols Hall; 532-7912; das at ksu dot edu;
office hours (to come); you can always email me for an appointment

Course web pages: Course materials are found at
K-State Online is used to collect assignments and record grades.

Course Structure: We meet each Tuesday and Thursday: there is a lecture of about 30-40 minutes, followed by a lab exercise.

Each lecture will present some material I have posted before we meet. I will also write additional, required, material on the board. (Be ready to take notes.) Then, we use these materials to work a lab exercise which will be scored before you leave class that day.

You will also work 3 out-of-class programming exercises and two design-implementation projects. You will meet one-on-one with the instructor 3-4 times during the semester to examine your out-of-class work. (These are "design and code reviews", like those done in industry.) There will be two in-class exams, one scheduled just before Spring Break and the other scheduled at the Finals Week exam time.

Grading: The lab exercises, homeworks, projects, one-on-one meetings, and exams are all scored with point values. At the end of the term, the points are totalled, and letter grades are assigned. There are no fixed 90-80-70 cutoffs for the letter grades --- a "curve" is calculated based on the difficulty of the activities. (If you score 90% or better, you are guaranteed an 'A', in any case.) Important: if you want a 'C' or better from this course, it is necessary for you to average at least 50% on the two exams totalled --- knowledge has to stick in your head!

Please speak with the instructor any time during the semester if you would like an indication of your possible grade in the course.

University policies: The Provost has requested that the information at be added to every course syllabus. Consider it done. Also, see for the University's policy regarding academic honesty.

This course is the most critical of the "core" CS course sequence. You must do your own work on all homeworks and exams --- NO TEAMWORK ALLOWED WITH ANYONE. Ask the instructor or TA if you are stuck on something. Ask if you do not know what "no teamwork" means.

Prerequisite: A 'C' or better in CIS300. This should imply you have significant experience with C# and Visual Studio. Please see the instructor if you have questions about your preparation for this course.

Objective and Topics:

You will learn about software engineering and software architectures: how to read and write software blueprints, how to convert blueprints into code, and how to employ standard design patterns and software architectures in real systems.

Here is a list of topics to be covered:

  1. How to manipulate Visual Studio
  2. Software as "virtual reality"; classes and unit testing
  3. Classes and objects; storage layout; object diagrams
  4. Class diagrams and using Nclass to draw them
  5. Interfaces, abstract classes, and C# delegates
  6. Reactive-system architecture: entities, boundaries, controllers
  7. Coupling and coherence; software metrics
  8. Model-View-Controller (MVC) architecture and its variants (MVP and MVB)
  9. Use cases and use-case realization; communication and sequence diagrams
  10. State diagrams and controller design
  11. Multithreading and its implementation by C# threads and locks
  12. Tiered ("3-tier") software architecture
  13. Design patterns: behavioral, structural, and creational
  14. Version control
  15. Introduction to software architecture "theory"
Class conduct: Because of past problems with cell phones and noise-making devices, you must silence phones, pagers, and computers before lecture starts. If any device sounds an alarm during lecture, then the instructor can choose to end lecture immediately for that day.

Drop policy: It is your responsibility to drop the course if you are enrolled but decide not to complete the course --- there are no ``automatic'' drops due to nonattendance. February 24 is the last day to drop a course without a "W" recorded on your transcript; March 30 is the last day to drop a course (with a "W".

KSU allows a retake of a course with removal of the prior grade, at most once per course, for a maximum of five courses.

Academic accommodation for students with disabilities: If you have a physical or learning disability that requires special accommodation, please notify the instructor during the first or second week of the course.