CIS 3296
Software Design
Fall 2024 Professor Applebaum
Table of Contents
Table of Contents
- Sections
- Teaching and Lab Assistants
- Office Hours
- Course Description
- Relevant University Policies for this course
- Students with Disabilities
- Student Support Services
- Attendance and Your Health
- Technology specifications
- Grading Scale
- Policy on the Use of Generative Artificial Intelligence
- Expectations for Class Conduct
- Statement on recording and distribution of recordings of class sessions
- Academic Freedom
- Academic Honesty
Instructor
Professor Ian Tyler Applebaum Email: ian.tyler@temple.edu Discord: Applebaumian#2888 Office: SERC 325
Sections
- Section 005
- Lecture Mondays and Wednesday 11:00 am - 12:20 am Room Tuttleman Learning Center 302
- Lab Friday 9:00 am - 10:50 am Room Biology - Life Science 137
Teaching and Lab Assistants
- Thanh Nguyen: thanh.p.nguyen46@temple.edu
Office Hours
Professor Applebaum
Office hours with Prof. Applebaum can be arranged by appointment using Calendly and will be conducted via Discord or Zoom. Office hours are available at the following times:
-
Monday, 3:30-5:00 PM Online or in Person SERC 325
-
Wednesday, 1:00-2:00 PM Online or in Person SERC 325
To schedule an appointment with Prof. Applebaum, click here!
Monday, 3:30-5:00 PM Online or in Person SERC 325
Wednesday, 1:00-2:00 PM Online or in Person SERC 325
If the scheduling widget doesn't appear use the following Calendly link: https://calendly.com/ian-tyler-applebaum/office-hours
TA
Thanh Nguyen
- Schedule using Calendly - online via Zoom
Course Syllabus
Course Description
This course provides direct experience in the design, development, documentation, testing and maintenance of medium size software projects, in the use of modern software problem solving abstractions and solution patterns, and in the use of software development environments. This course is the capstone of the programming course sequence. By its very nature, the capstone course is a method of summative evaluation of students' previous learning in computer science disciplines. It provides a forum that allows an instructor to assess the student's overall collegiate learning experience. Students are assumed to have gained adequate computer language (C and Java in particular) and programming skills in their early-year curriculum. As this is a writing-intensive course, students are required to submit written assignments that go through an iterative writing cycle: a student submits an assignment, the instructor gives feedback on the assignment, student revises and resubmits work, and the instructor assigns a grade for the revised version. Writing assignments in this course will be grounded in the expression of technical computer science concepts and are designed to help students to develop and practice skills in writing for the computer science discipline.
Education Goals
This is a writing-intensive course, students are required to submit written assignments that go through an iterative writing cycle: a student submits an assignment, the instructor gives feedback on the assignment, student revises and resubmits work, and the instructor assigns a grade for the revised version. Writing assignments in this course will be grounded in the expression of technical computer science concepts and are designed to help students to develop and practice skills in writing for the computer science discipline. Students are introduced to the following topics and required to demonstrate their practical application:
- Software design modeling and methodologies
- Object-oriented design principles
- Refactoring
- Software Architecture
- Design Patterns
- User Interaction and Software Interface Design Patterns
- Test Driven Development
- Debugging
- Code Profiling and Optimization
In addition, students will gain practice experience in using modern software development tools for:
- Project management
- Version control
- Build and configuration management
- Testing
- Issue tracking
Finally, students will gain knowledge and skills through experiential learning projects, working in small teams to contribute features or resolve issues for an open-source project. Through these projects, student gain experience working with a large, existing, open-source code base, typically contributing to projects that are available on GitHub or through the Apache Software Foundation. Students may work in teams of 1-4 people.
Minimum grade of C- in CIS 2168 and CIS 3207
Mandatory in programs:
- COMPUTER SCIENCE, B.A.
- COMPUTER SCIENCE, B.S.
- COMPUTER SCIENCE & PHYSICS, B.S.
- MATHEMATICS & COMPUTER SCIENCE, B.S. Concentration Requirement
- DATA SCIENCE WITH CONCENTRATION IN COMPUTATIONAL ANALYTICS, B.S.
Bulletin: https://bulletin.temple.edu/search/?search=cis+3296
How the course will be taught
The modality of this class is fully in-person. In-person activities are conducted at times and locations as indicated in TUPortal. Students are REQUIRED to attend the lecture and laboratory section that they are registered for.
Labs
Labs are team assignments made in groups of two or three students. The labs are designed to reinforce the material presented in class and they introduce the tools needed to be successful in the required course project. They form an important part of the learning process and make a significant contribution to the final grade. The instructor will assign teams or students can choose the partner they would like to work with. However, each lab assignment must be done with new partners. Students cannot work with the same partner they worked with in a previous lab assignment. When you register for this course, you are also registering for the lab session for this course. Students are REQUIRED to attend the lab section that they are registered for. Attendance will count as part of your grade. Each laboratory assignment includes a writing part to prepare for the project in the second part of the semester.
Project
The goal of the project in this course is for students to gain knowledge and experience in developing and contributing to a medium size project. During the first part of the semester while traditional labs are taking place, each student will develop a project proposal idea. During the second part of the semester the best project ideas will be retained and teams of approximately four students will develop them to completion. The nature of the project contribution may be to create a new project from scratch, or to contribute an enhancement or to fix an existing open-source project. The project deliverables reflect authentic writing experiences that are common in the software engineering discipline. To prepare for this style of writing, students will prepare project deliverables through an iterative writing process, in which an initial draft is submitted, the instructor provides written feedback, and a revised version is submitted. Each project deliverable will have an individual grading rubric that includes elements that assess the ability to specify the purpose of the documentation, use of abstraction and models appropriately, discuss potential alternatives, use and cite evidence to support design decisions appropriately, organize and structure documentation appropriately, and to use correct grammar and appropriate style for communicating to various audiences. Each team member must submit a team report along with the submission of each deliverable. The team report will include a description that outlines each team member’s contribution to the deliverable. Contributing to an open-source project is preferred. You may propose a stand-alone project, but if you do, it must be submitted as an open-source project. Sources of open-source projects include: GitHub (https://github.com)Apache software foundation (http://www.apache.org) , Source-Forge (http://sourceforge.net), Open Hatch (http://openhatch.org)
Peer Feedback | Instructor Feedback | Final | |
---|---|---|---|
Project Proposal | Week 3 | Week 4 | Week 5 |
Vision Statement and Personas | Week 9 | Week 10 | Week 11 |
Conceptual Design | Week 10 | Week 11 to 14 | Week 15 |
Use Cases | Week 10 | Week 11 to 14 | Week 15 |
- Mobile Applications
- Progressive Web Applications
- Embedded Systems
- Machine Learning
- RESTFul APIs
- Message Bot Integrations
- Multiplayer Games
Ultimately be creative and passionate. Some projects may not fit the above categories, and that is okay as long as the idea is well thought out, and researched.
Check out the Capstone Showcase to see previous examples of incredible projects and their demos.
Students will be organized into project teams ranging in size from 5 to 7. The project will follow a modified version of the Rational Unified Process known as the Unified Process for Education.
Students will propose their project ideas at the start of the second week of class. Project ideas must be substantial enough to be completed by a team of 5 - 7 students.
Course Schedule
Week | Event | Description | Date |
---|
Course Materials
This course has no required course materials that must be purchased.
Reference Material:
- Christensen. Flexible, Reliable Software Using Patterns and Agile Development. CRC Press. ISBN: 978-1-4200-9362-9
- Horstmann. Object-Oriented Design & Patterns. John Wiley & Sons. ISBN: 978-0-471-74487-0
- Fox. Engineering Software as a Service: An Agile Approach Using Cloud Computing. ISBN 978-0984881246 (https://www.saasbook.info/)
Additional Material:
- Tahchiev, Leme, Massol, & Gregory. JUnit in Action, 2nd Ed Manning Publications Co. ISBN: 9781935182023
- Freeman & Freeman. Head First Design Patterns1. O'Rielly. ISBN: 978-0-596-00712-4
- Beck. Test-Driven Development by Example. Addison-Wesley. ISBN 978-321-14653-3
- Freeman & Pryce. Growing Object-Oriented Software, Guided by Tests Addison-Wesley ISBN: 978-0-321-50362-6
- Fowler. Refactoring Improving the Design of Existing Code. Addison-Wesley ISBN: 978-0-201- 48567-7
- Scott Chacon. Pro Git (https://git-scm.com/book)
- Bruce Maxim and Roger S. Pressman. Software Engineering: A Practitioner's Approach
Technology Communication Requirements
This course requires the use of Canvas, including access to materials and assignment submission.
On-campus computer labs have resumed normal operations and are available for student use.
Limited resources are available for students who do not have the technology they need for class.
Limited resources are available for students who do not have the technology they need for class. Students with educational technology needs, including no computer or camera or insufficient Wifi- access, should submit a Student Technology Assistance Application located in TUPortal and linked from the Dean of Students Support and Resources webpage. The university will endeavor to meet needs, such as with a long-term loan of a laptop or Mifi device, a refurbished computer, or subsidized internet access. Internet Essentials from Comcast provides the option to purchase a computer for $150 and high-speed Internet service for $9.95 a month, plus tax. The Emergency Broadband Benefit (EBB) is available to purchase Xfinity, Verizon, T-Mobile, and other internet services. Qualified households can receive a temporary monthly credit of up to $50/month toward their Internet service and leased Internet equipment until the program's funding runs out.
Class Discord
In this class, Discord will be the host for team communication as well as communication with your instructors and peers. You are free to conduct team meetings, have discussions about your projects, get advice or talk with your instructors using this platform. In addition, you may talk about your projects and assignments with other students in all the sections of the CIS 3296 Software Design course.
Please make sure that you change your nickname to your full name!
Project Management Process
Agile-based software development project management process and the deployment of its tools will be introduced in the class. Agile is a very empowering process that helps software companies design and build the right products. The management process is very beneficial for software companies because it helps them analyze and improve their products throughout its development. Agile is a process that helps teams provide quick and unpredictable responses to the feedback they receive on their projects. It creates opportunities to assess a project’s direction during the development cycle. Teams assess the project progresses in regular meetings called sprints or iterations.
Documentation
You are expected to develop your documentation using a project documentation tool called Docusaurus. Docusaurus will help you create and maintain a documentation website for all of your project documents. They will be written in markdown format. These, then, are easily published to GitHub Pages (for references on the markdown format we recommend this cheat sheet). We will provide templates and tutorials on how to generate and revise your documents. These should be followed to receive a grade on your documentation assignments.
You will open a pull request on GitHub, marking Instructors as reviewers, and turn in a link to your project documents on-line to the Canvas Web site. The instructors will directly comment on your documentation site's GitHub repository, but you will receive your grade through Canvas. These documents will be continuously revised over the course of the semester in this manner.
Writing-Intensive Course
As this is a writing-intensive course, students are required to submit written assignments that go through an iterative writing cycle: a student submits an assignment, the instructor gives feedback on the assignment, student revises and resubmits work, and the instructor assigns a grade for the revised version. Writing assignments in this course will be grounded in the expression of technical computer science concepts and are designed to help students to develop and practice skills in writing for the computer science discipline. You will learn to write various technical documents (see Documentation) during the life cycle of a software development project. The artifacts at the end of phase will be graded. The initial grading score may be lower, but please don't panic, feedback and comments will be provided. Students are expected to revise their documentation and resubmit them prior to final grading. The revised document will be graded iteratively, and a better score be given if the revision meets the expectation of instructor’s feedback/comments.
Quizzes and Exams
Grading
The final course grade will include quiz scores, exam scores, project deliverables and lab coding assignments. No grade of incomplete will be given except under extraordinary conditions. Final grades are comprised of the following types of assignments:
- Writing Project Deliverables: 40%
- Quizzes and participation activities: 20%
- Midterm/Exam: 20%
- Coding Activities in Labs: 20%
Quizzes
There will be at least four quizzes. Quiz happens during a part of the class time and are scheduled after a lab or project assignment is due. Content of the quiz include material seen during lecture and material practiced during the preceding lab. More quiz can be schedule during the semester.
Exam
Quiz happens during class time and are scheduled in advance. Content of exam include material seen during lecture and material practiced during the preceding lab.
Laboratory
Labs are team assignments made in groups of two or three students. The labs are designed to reinforce the material presented in class and they introduce the tools needed to be successful in the required course project. They form an important part of the learning process and make a significant contribution to the final grade. The instructor will assign teams or students can choose the partner they would like to work with. However, each lab assignment must be done with new partners. Students cannot work with the same partner they worked with in a previous lab assignment. When you register for this course, you are also registering for the lab session for this course. Students are REQUIRED to attend the lab section that they are registered for. Attendance will count as part of your grade. Each laboratory assignment includes a writing part to prepare for the project in the second part of the semester. Failure to submit a lab assignment will result in the reduction of your maximum possible final grade by one letter grade step for each skipped lab. For example, if you fail to submit 3 labs, the best possible grade you can earn is a B (i.e., reduction for missed lab 1: A+ to A-; reduction for missed lab 2: A to A-; reduction for missed lab 3: A- to B+).
As a university policy on a writing-intensive course, at least 40% weight will be weighed to the final score in Canvas based on the writing assignments. You will submit all the project documentation and project status reports as writing assignments to Canvas and the work will be graded based on technical content and quality of writing.
Each student's grade is adjusted either up or down based on the student's personal performance in the project and the scores in Canvas (see Figure below).
If for example, a project gets a group grade B based on the group performance, almost all of the team members in the project team will get B grades except a few team members may get better or poorer grades than B based on their personal performance. Therefore, it is important to contribute, and be a team player.
Course Orientation
Class Policies
Attendance to both lab and lecture is mandatory in this course, as it is essential for successful project development in a team setting. We will use Qwickly in Canvas to track students’ attendance. Unexcused absences will not only negatively impact your personal performance, but also the performance of your team. As a result, it may result in a reduction of your final grade. Please make every effort to attend all lecture and lab sessions on time. If you are unable to attend a class for any reason, please inform your team members and the instructor ahead of time as a courtesy. During class sessions, please keep your mobile phone on vibrate mode.
Tell your manager that you can't work during this class as it is highly interactive and requires your full attention, particularly when we begin the project. I expect that since you registered for this course, you can fully participate. If you are unable to interact, give presentations, turn on your camera, or communicate with your teammates during lab or lecture, it would be best for you to withdraw from the course.
You are expected to turn in your project documents online to the Canvas Web site on time. Late Assignments are subject to reduced points or a 0 grade. Project Documents must be published using Docusaurus and live on GitHub Pages. Late and hand-written submission will not be accepted or graded. If you submit multiple versions of the document online before the deadline, only the latest version will be graded. This does not apply to the revision of documentation.
You may discuss project assignments with your friends, but everyone must write their own solutions. Additionally, you must include the names of any collaborators on the front page of the assignment or in the comments in the code, e.g. "I discussed this with Peter and Sally."
Using open source code is allowed and encouraged, but you are responsible for adhering to the open source license agreement if your project implementation includes any open source software code.
Sharing your code, design specifications, and other documents in the capstone project with other students is permitted and encouraged. If you receive help from other students concerning the solution of your project implementation, it is appropriate to acknowledge that help in your design documents or in your source code as comments, e.g. "I discussed this with Peter and Sally." If you copy someone else's code, you must cite the source.
You may use generative large language models such as ChatGPT in the process of coding your projects. Keep in mind the consequences of using such tools as they have a large impact on your projects quality. Also keep in mind that a large language model is not going to be efficient to develop an entire system. There is no free lunch. These tools are better suited as an aid to your learning.
You may not use AI such as ChatGPT to write your documentation for you. You may use it as an aid to your writing, but use of such technology will be considered academic dishonesty.
Relevant University Policies for this course
Students with Disabilities
Please bear in mind that COVID-19 may result in a need for new or additional accommodations.
Any student who has a need for accommodations based on the impact of a documented disability or medical condition should contact Disability Resources and Services (DRS) located in the Howard Gittis Student Center South, 4th Floor at drs@temple.edu or 215-204-1280 to request accommodations and learn more about the resources available to you. If you have a DRS accommodation letter to share with me, or you would like to discuss your accommodations, please contact me as soon as practical. I will work with you and with DRS to coordinate reasonable accommodations for all students with documented disabilities. All discussions related to your accommodations will be confidential.
Student Support Services
The following academic support services are available to students:
- Student Success Center
- University Libraries
- Undergraduate Research Support
- Career Center
- Tuttleman Counseling Services
- Disability Resources and Services
If you are experiencing food insecurity or financial struggles, Temple provides resources and support. Notably, the Temple University Cherry Pantry and the Temple University Emergency Student Aid Program are in operation as well as a variety of resources from the Division of Student Affairs.
Attendance and Your Health
We continue to meet the changing circumstances of the COVID- 19 pandemic with flexibility and by working together as a community. To achieve course learning goals, students must attend and participate in classes, according to the course requirements. However, if you feel unwell or if you are under quarantine or in isolation because you have been exposed to the virus or tested positive for it, you should not come to campus or attend in-person classes or activities. It is the student’s responsibility to contact me to create a plan for participation and engagement in the course as soon as you are able to do so, and to make a plan to complete all assignments in a timely fashion when illness delays your completion.
Technology specifications
This course requires the use of Canvas, including access to materials and assignment submission. On-campus computer labs have resumed normal operations and are available for student use. Limited resources are available for students who do not have the technology they need for class. Students with educational technology needs, including no computer or camera or insufficient Wifi-access, should submit a Student Technology Assistance Application located in TUPortal and linked from the Dean of Students Support and Resources webpage. The university will endeavor to meet needs, such as with a long-term loan of a laptop or Mifi device, a refurbished computer, or subsidized internet access. Internet Essentials from Comcast provides the option to purchase a computer for $150 and high-speed Internet service for $9.95 a month, plus tax. The Emergency Broadband Benefit (EBB) is available to purchase Xfinity, Verizon, T-Mobile, and other internet services. Qualified households can receive a temporary monthly credit of up to $50/month toward their Internet service and leased Internet equipment until the program's funding runs out.
Grading Scale
A Range | B Range | C Range | D Range | F Range |
---|---|---|---|---|
A: 94-100 | B+: 87-89 | C+: 77-79 | D+: 67-69 | F: 0-59 |
A-: 90-93 | B: 84-86 | C: 74-76 | D: 64-66 | |
B-: 80-83 | C-: 70-73 | D-: 60-63 |
Policy on the Use of Generative Artificial Intelligence
Certain assignments in this course will permit or even encourage the use of generative artificial intelligence (GAI) tools such as ChatGPT or Github Copilot. The default is that such use is disallowed unless otherwise stated. Any such use must be appropriately acknowledged and cited. If clarity on this policy's applicability is required at any time, please speak with the instructor. It is each student’s responsibility to assess the validity and applicability of any GAI output that is submitted; you bear the final responsibility. Violations of this policy will be considered academic misconduct. Note the fact that different classes in the CIS department may have policies on the use of AI that differ from this one, and it is the student’s responsibility to conform to expectations for each course.
Expectations for Class Conduct
The best way to maintain a safe and focused learning environment is for everyone to get vaccinated. We all need to follow the university guidance on masking as well. For your general health and well-being, hand washing and monitoring your health is still highly recommended. It is also important to foster a respectful and productive learning environment that includes all students in our diverse community of learners. Our differences, some of which are outlined in the University's nondiscrimination statement, will add richness to this learning experience. Therefore, all opinions and experiences, no matter how different or controversial they may be perceived, must be respected in the tolerant spirit of academic discourse. Treat your classmates and instructor with respect in all communication, class activities, and meetings. You are encouraged to comment, question, or critique an idea but you are not to attack an individual. Please consider that sarcasm, humor and slang can be misconstrued in online interactions and generate unintended disruptions. Profanity should be avoided as should the use of all capital letters when composing responses in discussion threads, which can be construed as “shouting” online. Remember to be careful with your own and others’ privacy. In general, have your behavior mirror how you would like to be treated by others.
Statement on recording and distribution of recordings of class sessions
Any recordings permitted in this class can only be used for the student’s personal educational use. Students are not permitted to copy, publish, or redistribute audio or video recordings of any portion of the class session to individuals who are not students in the course or academic program without the express permission of the faculty member and of any students who are recorded. Distribution without permission may be a violation of educational privacy law, known as FERPA as well as certain copyright laws. Any recordings made by the instructor or university of this course are the property of Temple University.
Academic Freedom
Freedom to teach and freedom to learn are inseparable facets of academic freedom. The university has adopted a Policy on Student and Faculty Academic Rights and Responsibilities (links to an external site.). http://policies.temple.edu/PDF/99.pdf
Academic Honesty
According to the University Student Code of Conduct, students must not commit, attempt to commit, aid, encourage, facilitate, or solicit the commission of academic dishonesty and impropriety including plagiarism, academic cheating, and selling lecture notes or other information provided by an instructor without the instructor’s authorization. Violations may result in failing the assignment and/or failing the course, and/or other sanctions as enumerated in the University Code of Conduct (Links to an external site.).