Syllabus v1
Syllabus v1
Fall 2024
Drexel University
Teaching Assistants
Rishi Patel
Email: [email protected]
Location: CLC
Time: Wednesdays 2:00pm - 4:00pm
Time: Fridays 12:00pm - 2:00pm
Marius Garbea
Email: [email protected]
Location: CLC
Time: Thursdays 4:00pm - 6:00pm
Time: Fridays 2:00pm - 4:00pm
Required Book
Design Patterns Explained: Alan Shalloway & James Trott, Addison- Wesley 2nd Edition. This
can be purchased in either paper or electronic format, the eBook is available on Amazon.
Recommended Book
Design Patterns: Elements of Reusable Object-Oriented Software: Erich Gamma, Richard
Helm, Ralph Johnson, John Vlissides, 395 pages (October 1994), Addison-Wesley.
page 1 of 10
SE310: Software Architecture 1 Drexel University
2. you must ensure your submission will run on a system that hasn’t been configured for
Kotlin (e.g. the TA’s computer),
4. proceed at your own risk if you are not already familiar with Kotlin.
page 2 of 10
SE310: Software Architecture 1 Drexel University
Weekly Schedule
Week 1 (Sept. 23rd)
Synchronous Activities:
• Live Lecture: Course Overview
• Bring a laptop with IntelliJ, Java, and StarUML installed
• Lab: Alarm-Clock-Radio You must attend lab to get credit. Start in class, finish at
home. This is individual work. Due: Wednesday Oct. 2nd, 5:00 AM EST.
Asynchronous Activities:
• Video Lecture: JAVA and OOP Concepts Review (9 recordings) as needed
• Document: Homework & Lab Exercise Submission Requirement (Reading)
• Document: Getting Started with IntelliJ (Reading)
• Student Repository: Download & review code and UML
• Review Quiz: Java Code (take until score ≥ 70) Due: Wednesday Oct. 2nd, 5:00 AM
EST
• Review Quiz: Java Concepts (take until score ≥ 70) Due: Wednesday Oct. 2nd, 5:00
AM EST
Week 2 (Sept. 30th)
Synchronous Activities:
• Lecture: Reflections on OO Design
• Homework 1: Basic Maze and File Parsing. Start in class, finish at home. This is
individual work. You must attend lecture to receive credit. Due: Wednesday Oct. 9th,
5:00 AM EST
Asynchronous Activities:
• Video Lecture: Chapter 1: Object Oriented Paradigm
• Video Lecture: Chapter 3: A Problem That Cries Out for Flexible Code
• Video Lecture: Chapter 4: A Standard Object-Oriented Solution
• Video Lecture: Chapter 5: An Introduction to Design Patterns
• Review Quiz: Chapters 1 - 3 (take until score ≥ 70) Due: Wednesday Oct. 9th, 5:00
AM EST
Week 3 (Oct. 7th)
Synchronous Activities:
• Lecture: Reflections on Patterns of the Week
• Group Lab: Soda Dilemma - Improving a Bad Design - Must attend lab and complete
during class.
• Group Lab: Paragraph Processor - Improving a Bad Design - Must attend lab and
complete during class.
Asynchronous Activities:
• Video Lecture: Chapter 6: The Facade Pattern
• Video Lecture: Chapter 7: The Adapter Pattern
page 3 of 10
SE310: Software Architecture 1 Drexel University
page 4 of 10
SE310: Software Architecture 1 Drexel University
Asynchronous Activities:
• Video Lecture: Chapter 13: Solving the CAD/CAM Problem with Patterns
• Video Lecture: Chapter 14: The Principles and Strategies of Design Patterns
• Video Lecture: Chapter 15: Commonality and Variability Analysis
• Video Lecture: Chapter 17: The Decorator Pattern
• Video Lecture: Chapter 18: The Observer Pattern
• Video Lecture: Chapter 21: The Singleton Pattern
• Video Lecture: The Decorator Revisited
• Homework 2, Part D Due: Monday Dec. 2nd, 5:00 AM EST
• Review Quiz: Chapters 11 - 21 (take until score ≥ 70) Wednesday Nov. 13th, 5:00 AM
EST
• Group Lab: Observer Pattern - Improving a Bad Design - Must attend lab and
complete during class.
Asynchronous Activities:
• Group Lab: Builder / Template Pattern - Must attend lab and complete during class.
Asynchronous Activities:
• None
Asynchronous Activities:
• None
Asynchronous Activities:
page 5 of 10
SE310: Software Architecture 1 Drexel University
• None
Week 12 / Finals Week (Dec. 9th)
Synchronous Activities:
• Final Exam: Date/Time/Room TBA - It will be in-person
Asynchronous Activities:
• Study
Objectives of this Course
1. To bring students to a level of competency in OO design so that they can handle team or
individual projects of moderate complexity.
This course is about good object-oriented design and implementation. In the challenging
projects that programmers face, the design stage is where the primary difficulties of program-
ming are worked out. Implementation, the task of turning a design into a working program in
a programming language, is supposed to be very straightforward given a good design.
Object oriented programming (OOP) allows programmers to write programs that are easier
to reuse and easier to extend and maintain over a life cycle of usage. However, this power is
achieved at the cost of making the program designer’s task more complicated, due to the rich-
ness, subtlety and peculiar limitations of OO classes and class inheritance. A major objective
of this course is to bring students to a level of competency in OO design so that they can handle
team or individual projects of moderate complexity. Design skills students should acquire in
this course include:
• The ability to decide which classes would be appropriate given only a problem specification
• Designing for ease of future code maintenance
• Being able to decide upon details of classes from a problem specification
• Finding well-known software patterns from typical problem specifications
• Being able to communicate both static and dynamic aspects of designs using Universal
Modeling Language (UML).
Design skills should be applicable to any of the OO languages (e.g. C++, Java, etc.).
Grades for design projects will be based, among on other things, on the quality of the de-
sign and on the written explanation, description, and justification of the design.
3. To make students more self-aware, descriptive, and reflective about their programming and
design.
This objective is to make you more self-aware, descriptive, and reflective about your pro-
gramming and design. By learning about and practicing with design and quality rationales the
page 6 of 10
SE310: Software Architecture 1 Drexel University
course will present, you should be able to state, explain, judge, and justify design or imple-
mentation decisions in a way that would be generally acceptable among (at least) entry-level
computing professionals. It is also a necessary step towards being able to continue to improve
your skill in the future without the need for professors or formal classes.
4. To make student understand how patterns are applied in modern software systems. Finally,
after this course, the students should be able to understand how modern software systems,
including the ones that they use everyday, use patterns as building blocks to assemble large,
resuable software systems.
Prerequisites
We expect that all taking this class has had CS260 (Data structures), CS 265 (Advanced Pro-
gramming Techniques), and SE 181(Introduction to Software Engineering and Development)
or their equivalent. The experience in these courses includes the design and implementation of
programs that involve the use of classes, pointers, and dynamic storage allocation. It should
also include the experience of designing several CS 172-like or CS260- like programs requiring
familiarity of class creation, basic I/O, and the use of built-in class libraries. The experience in
writing these programs is also expected to have given you knowledge of basic coding practices
such as: good selection of names, good quality commenting and indentation, separation of
classes into separately compiled files, what constitutes appropriate selection of test data, and
how to develop a program incrementally (e.g., use of program stubs as placeholders for as-yet
unwritten program modules). Experience with recursive programming design and implementa-
tion is expected.
Some assignments will assume that you find it routine to implement programs that use data
structures such as trees or linked lists. Some assignments will ask that you will be able to
design and implement algorithms to solve simple problems on your own, without extensive
hints or outside help. This will probably require a bit more mental effort on your part than
many assignments from previous courses, in that you will have to devise the solution algorithm
yourself based upon your prior experience with programming problem solutions. You can use
the first programming assignment as an indication of what you are expected to have started
with. If you have questions, please consult with the instructor.
Grading Policy
Homework Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40%
Lab Assignments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10%
Midterm Exams . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20%
Final Exam . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30%
All quizzes must be taken and passed (70% or better), or you will lose 1 point of your final
grade for each quiz not taken/passed. Quizzes can be retaken if failed up until the due date.
The instructor reserves the right to make modest adjustments (5% or 10% for a category) in
the weighting used.
Students will receive a reduced or a failing grade for the course if in the instructor’s judg-
ment their performance on the midterm and final examinations indicates that they cannot
express an adequate understanding of the material in the course. One criterion used for ”ade-
quate” is achieving at least a 40% mark on the final exam.
page 7 of 10
SE310: Software Architecture 1 Drexel University
Good quality in-class participation (being prepared to answer questions posed by the instructor
during the class) will be taken into account as a compensating factor for a poor exam perfor-
mance.
Part of your assignments may consist of written answers rather than just programs. Part
of your assignment grade will be based on how you express yourself, as well as what you say.
Your writing is expected to be of the quality comparable to technical writing done by a well-
regarded computing professional.
In order to pass the course, you must successfully complete the programming project
(Homework 2). Successfully completing homework 2 means that the program you submit:
• Includes all four parts
• Compiles with all the requirements given in the homework instructions (including grading
and tabulating)
• Runs without significant errors
Incomplete Grade Policy
A grade of incomplete (INC) may be considered by your course instructor if exceptional cir-
cumstances warrant such course of action. In order to be eligible, you must have:
• Successfully completed all of the labs
• Successfully completed homework assignment 1
• Successfully completed homework assignment 2, parts A, B, & C
• Scored a 70 or more on homework 2 parts B & C
• Taken the midterm and final exams
• Have a legitimate reason to request an incomplete grade
In cases when the instructor judges that an Incomplete Grade (INC) can be granted, a contract
will be signed by both, the student, and the course instructor, and submitted to the Registrar’s
Office. The coursework must be completed within the following two academic terms otherwise
the INC grade will become a failing grade (F).
Handing in Assignments
Assignments will be made available on Blackboard Learn and will be due as described in each
assignment. The programming assignments must be done in Java using IntelliJ. There may also
be written work that should be submitted as specified in the assignment. When assignments
call for written responses, they should be created using a word processor, written in intelligible,
clear, and correct English. Poorly written or sloppy work will be returned ungraded. Programs
that do not compile and cannot be tested will receive little or no “partial credit”.
All submissions must be made through Blackboard Learn. Make sure what you submit is
a final submission, not just a step along the way. We will not open multiple sub-
missions on Blackboard. All coding submissions, labs and homework assignments, need to
include the full project directory, any associated resources (jar files, serialized files, README,
other notes) inside the zip file. Submissions not following these guidelines will be returned
ungraded.
page 8 of 10
SE310: Software Architecture 1 Drexel University
• Assignments must be submitted via Blackboard Learn by the given deadline in order to
receive full credit
• Assignments submitted 1 second to 1 week late will receive a 15% penalty
• Assignments submitted 1 to 2 weeks late will receive an additional 10% penalty
• Assignments submitted more than 2 weeks late will be subject to an additional 5% penalty
for each week
Academic Honesty
The university’s Academic Honesty policy is in effect for this course. You can find the policy
at https://drexel.edu/provost/policies-calendars/policies/academic-integrity
You must be the sole original author of all assignments and examination solutions
in their entirety, unless the instructor explicitly gives you permission to do oth-
erwise in written directions on an assignment or exam. Design and implementation
problems should be discussed with the instructor or the teaching assistants only. This means
that you should have an implementation plan that leaves enough time for such consultation.
As the university’s policy explains penalties up to and including receiving a failing grade for
the course with no opportunity to withdraw will be given for first time offenses of plagiarism,
fabrication, cheating, or other forms of academic dishonesty. Allowing another student to copy
from your work (i.e. helping another student to cheat) is also a violation of the policy on aca-
demic dishonesty. Use of ChatGPT, other generative AI ‘assistants’, GitHub Copilot,
or other forms of AI and/or code generators to produce in part, or in full, any of
your submissions will be considered a violation of the academic honesty police.
The standards for originality in a program are similar to those of other written works. Programs
by different authors show clear and substantial differences as judged by most criteria, including
but not limited to choice of variable and procedure names, line spacing and indentation, choice
of program structure, choice of algorithms, ordering of modules, style and content of docu-
mentation, module design, and ordering and choice of instructions. The original author of an
assignment can explain each detail and how they came to create it on their own. Whenever you
use references or sources (i.e. the Internet) for “inspiration” in your programs and designs, you
must give a complete and proper citation of the source. Copying or close paraphrasing from
other sources and claiming it is your own original work is a violation of the academic honesty
policy.
It is your responsibility to avoid violating the university’s policy. If you are unclear as to what
the policy means in a particular situation, ask the instructor for clarification before you hand
anything in.
In addition, be clear that if you electronically copy another person’s work and submit it as your
own you are in violation of this policy and could be failed for the course on the first occurrence.
If you solicit and/or hire someone to do your work, even if the work is not complete, you are
in a violation of this policy and could be failed for the course on the first occurrence. Any
violation of this policy may also result in the matter being handed over to an external judiciary
panel. Do not let this happen to you.
page 9 of 10
SE310: Software Architecture 1 Drexel University
Student Accommodations
In compliance with the Americans with Disabilities Act of 1990, Section 504 of the Rehabilita-
tion Act of 1973, and Drexel University’s policies and procedures, the University is committed
to the non-discrimination of students with disabilities.
In addition to the course policies listed on this syllabus, the following University policies are in
effect in this course:
page 10 of 10