Code Monkey home page Code Monkey logo

su_cpsc_5200_19wq's Introduction

CPSC-5200-01 Software Architecture and Design

Schedule: Tuesday and Thursday in ENGR 304, 6:00pm to 8:05pm
Instructor: Michaeljon Miller ([email protected])
Office hours: Before class or by appointment (send me email or a text)
Course materials: https://github.com/michaeljon/SU_CPSC_5200_19WQ

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

  • 08-Jan: First day of class
  • 10-Jan: Introduction to Software Architecture
  • 15-Jan: Patterns of Software Architecture I
  • 17-Jan: Patterns of Software Architecture II
  • 22-Jan: Guest lecture on Actors
  • 24-Jan: Guest lecture on Economics of Software Architecture
  • 29-Jan: Microservices, serverless, and distributed systems
  • 31-Jan: Re-design / re-arch (TNG design session)
  • 05-Feb: Introduction to UML
  • 07-Feb: In-class mid-term exam
  • 12-Feb: Documenting software architecture and design
  • 14-Feb: API Design
  • 19-Feb: Design Patterns I
  • 21-Feb: Design Patterns II
  • 26-Feb: Possible guest lecture (non-functional requirements)
  • 28-Feb: Possible guest lecture (Agile Software Architecture)
  • 05-Mar: Anti-patterns and Topics in Software Architecture and Design
  • 07-Mar: Pragmatic Programming
  • 12 and 14-Mar: In-class project 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"

Assignments (tentative)

At this time I expect to have a single 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.

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

Course assignment and grading breakdown

This is a tentative break-down, I'll adjust during the first week(s) of class based on class size and experience.

  • Project architecture paper due 31-Jan (5 points)
  • Mid-term exam, in class on 07-Feb (15 points)
  • Project preliminary design paper due 19-Feb (5 points)
  • Project detailed design document due 07-Mar (5 points)
  • Final project materials due 12-Mar
  • Project presentations on 12- and 14-Mar (25 points)
  • Final exam, take home, due on 19-Mar (25 points)
  • In-class participation (10 points)
  • Random individual homework and / or in-class quizzes (10 points)

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.

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.