Course Overview
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.
Prerequisites and Program Requirements
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.