/SU_CPSC_5200_20WQ

SU CPSC 5200 20WQ course materials

Primary LanguageC#

CPSC-5200-01 Software Architecture and Design

Schedule: Tuesday and Thursday in ENGR 312, 6:00pm to 8:05pm
Instructor: Michaeljon Miller (michaeljon.miller@outlook.com)
Office hours: Before class or by appointment (send me email or a text)
Course materials: https://github.com/michaeljon/SU_CPSC_5200_20WQ

Catalog Description

Overview of design principles, architectural design techniques, modeling and analysis of complex software systems in terms of structural and behavioral modeling. Topics include functional and quality analysis, architectural styles and patterns, UML, design patterns, implementation frameworks, product families, dynamism, and emerging topics.

Course Learning Objectives

  • Architecture and design styles and patterns, and how / when to apply them
  • The role of architecture and the software architect within the context of software projects
  • How architecture and design interact to deliver software products
  • Any number of interesting and related software development topics from an architect's perspective

Reading Materials

Most materials for this class will be provided by the instructor. While there are plenty of texts that cover software architecture, design, and the combination, none really capture what I'm looking for in this course. I will generally assign 1 - 2 short readings per week. When I do this I will provide links in the lecture materials and, if appropriate, I will provide a PDF.

As a result of that we will not (at this time) have a textbook. I will recommend various books over the quarter. These are meant to be something you read and / or refer to when you need it in your career. That is, these will be reference texts for your bookshelf. (You have one, right?) I will recommend these materials each class in the slides and in an overall reading list.

Important Dates

Week 1 [x] 07-Jan: First day of class [x] 07-Jan: Introduction to Software Architecture and Design [x] 09-Jan: REST as an architectural style

Week 2 [x] 14-Jan: no class, weather-related [x] 16-Jan: Software Architecture, An opinionated approach

Week 3 [x] 21-Jan: Introduction to UML (https://seattleu.zoom.us/j/289933070) [x] 23-Jan: Agile software architecture I [x] 23-Jan: Individual assignment 1 due

Week 4 [ ] 28-Jan: Agile software architecture II [ ] 28-Jan: API Design [ ] 28-Jan: Team project introduction [ ] 30-Jan: Architecture patterns and styles

Week 5 [ ] 04-Feb: Non-functional requirements (guest lecture) [ ] 06-Feb: Economics of software architecture (guest lecture) [ ] 06-Feb: Individual assignment 2 available

Week 6 [ ] 11-Feb: Documenting software architecture and design [ ] 11-Feb: In-class mid-term exam [ ] 13-Feb: Distributed computing [ ] 13-Feb: Individual assignment 2 due

Week 7 [ ] 16-Feb: Fowler Analysis Patterns [ ] 18-Feb: GoF Design Patterns [ ] 18-Feb: Team project arch proposal due

Week 8 [ ] 25-Feb: lecture tbd [ ] 25-Feb: 2nd team paper due [ ] 25-Feb: Individual assignment 3 available [ ] 27-Feb: TNG Design session

Week 9 [ ] 03-Mar: Anti-patterns and Topics in Software Architecture and Design [ ] 05-Mar: Pragmatic Programming [ ] 05-Mar: Final team paper due

Week 10 [ ] 10-Mar: In-class team presentations and demonstrations [ ] 12-Mar: In-class team presentations and demonstrations [ ] 12-Mar: Individal assignment 3 due

Week 11 [ ] 17-Mar: Course and final exam review [ ] 17-Mar: In-class individual presentations and demonstrations [ ] 19-Mar: Final exam due

List of topics / schedule (tentative)

  • Architecture and design terminology
  • Architecture styles and patterns
  • Design patterns and styles
  • Introduction to UML and modeling concepts
  • Architectural process, structures, and the role of "The Architect"
  • Discussion of non-functional vs. functional requirements

Assignments (tentative)

At this time I expect to have a single team project that we work on throughout the quarter. As such we will be learning tools and techniques that get us to the final "demo day" where we'll do an in-class demo. During the quarter we'll have intermediate "releases" in the form of assignments (think of them as sprints if that helps). You can find the project description here.

You will each, individually, have three assignments for this class. They vary in both complexity and time requirements, but none should incur more than a few hours of work on your part. I have called out their due dates in the course schedule above, but I will release details of the assignments during the quarter.

Grading

This class is graded on the following scale. Over the course of the quarter you will be given, via homework, exams, projects, and participation, the opportunity to earn 100 points. Exams may include an "extra credit" opportunity. An "A" grade is easily achievable in my courses, but you will need to put in the work.

The following scale is different from the overall University's scale. I do not grade with +/- modifiers. There are only three possible passing grades in this class. I'm also very strict about these cut-points and have been for many years.

  • 95+ points - A
  • 90+ points - B
  • 85+ points - C
  • below 85 is considered a failing grade

Note on class participation

Twenty points in this class are completely in your hands as an individual. But, software engineering is a team process and one of the most important parts of that is communication. This includes both written and verbal. As such, the exams will be essay format (to include requirements artifacts as necessary). I also expect full classroom participation in discussions. Feel free to voice your opinions and disagree with what you're learning. That's part of the process. But do so in a respectful manner.

It's also extremely rare to have a software project of any reasonable or useful size conceived and built by a single person (see above team process). This is my primary motivation for the heavy weighting on the project this quarter..

You will be expected to present matertials to the class. These presentations are usually short (10 minutes), concise, and expected to cover information from the class. I will occasionally call on you, randomly, to present or work out a problem at the whiteboard.

Class structure

We have 2 hours twice a week. Each class will consist of a 10 - 15 minute class discussion of any reading assignment or outside work from the previous week. We will then take 90 minutes to cover the night's materials with a short break approximately half-way through. On Thursdays, if necessary, we will spend the final 15 minutes covering the assignment for the week.

Occasionally we will have one or more of you presenting to the class. I'll schedule these as appropriate.

Attendance policy

Class attendance is strongly encouraged. Students missing a class are responsible for any material assigned or covered in class during their absence. Active participation in the class discussions and activities is expected and it could influence your grade in boundary cases. Punctual attendance is highly encouraged as late arrival is distracting for everyone in the class.

Personal Electronics Policy

Cellphone usage is not permitted in class. Turn them off and put them out of sight. You may use a laptop or tablet to take notes but do not use them to surf the web, chat, Snapchattagrammabook or catch up on email. No electronic equipment may be used during the exam unless otherwise instructed. If you have work issues to deal with I completely understand. But, take them outside. We'll catch you up when you get back.

Homework Policy

Late homework will not be accepted. You are responsible to make sure your assignment is submitted before the deadline. Late submissions will receive a zero. Individual extensions will only be given in extraordinary circumstances communicated with the professor before the deadline.

Please follow the specific instructions and submission policy for each assignment. Your assignment may be submitted on paper to the instructor. In the case of an electronic submission, make sure that your submission is in Microsoft Word or PDF format (ZIP, text or image files are not accepted and get stripped out by the SU email system). Also submit a single document and make sure all your figures are included in your main document. You are responsible to make sure that your file is not corrupted and that it is readable by the instructor. All submissions must include your name (and in the case of group submissions, names of all group members).

Workload Expectation

You are expected to keep up with the course material. This includes completion of the reading assignments that are posted in the lecture notes and / or schedule. Unless explicitly noted, you are responsible for all assigned material even if a topic was not covered during the lecture.

This is a five-credit hour class, and consequently you are required to spend at least 10 hours per week outside of class to prepare for the course, study material, and work on homework assignments or project.

Courtesy

  • Students are responsible for all materials covered in class.
  • Turn off all cellphones, pagers, etc.
  • If you use a laptop to take notes, make sure all other applications (email, IM, Snapchattagrammabook, etc.) are off during the class.
  • Strive for punctuality but if extenuating circumstances cause you to be late, please take a seat at the front of the classroom.
  • If you have a work thing that arises during class, take it outside please.
  • If you're running late send the instructor or a fellow student a text / email so we know if / when to expect you (yes, I might hold class start some days given weather or traffic conditions).

Grading Dispute Policy

If you feel that part of your homework or exam was graded incorrectly, you may contact me within two days from when the exam or assignment was returned to you.

Academic Integrity

Plagiarism is the unacknowledged use of the work or intellectual property of other persons, published or unpublished, presented as one's own work. All students are expected to work on all individual assignments independently. Collaboration on individual assignments is considered cheating and will be penalized accordingly. Other examples of behavior that is not tolerated in this class include copying all or part of someone else's work and submitting it as your own, sharing your assignment solution with other students in the class, consulting with another student during an exam, and copying text from published literature without proper attribution. If you have questions about what is allowed, please discuss it with the instructor. All students are responsible for reading and following the Seattle University Academic Honesty Policy. Students who violate University standards of academic honesty are subject to disciplinary sanctions, including failure in the course and suspension from the University.

Notice for Students Concerning Disabilities

If you have, or think you may have, a disability (including an 'invisible disability' such as a learning disability, a chronic health problem, or a mental health condition) that interferes with your performance as a student in this class, you are encouraged to arrange support services and/or accommodations through Disabilities Services staff located in Loyola 100, (206) 296-5740. Disability-based adjustments to course expectations can be arranged only through this process.

Notice Regarding Religious Accommodations

It is the policy of Seattle University to reasonably accommodate students who, due to the observance of religious holidays, expect to be absent or endure a significant hardship during certain days of their academic course or program. Please see, Policy on Religious Accommodations for Students.

Academic Resources

Please take advantage of the academic support services available to you at the university. Even if you have had excellent study skills in the past, it is easy to slip into suboptimal habits and these services can help you excel in your studies.

Academic Resources (Links)

Library and Learning Commons (This includes: Learning Assistance Programs, Research [Library] Services, Writing Center, Math Lab)

Academic Integrity Tutorial

Academic Policies on Registrar website

  • Academic Integrity Policy
  • Academic Grading Grievance Policy
  • Professional Conduct Policy (only for those professional programs to which it applies)