CPSC 071 01: Course Syllabus

1. Basic Information

Course Meetings

Lecture (CPSC 071 01)

  • Times: Mondays, Wednesdays, and Fridays @ 11:30am - 12:20pm ET

  • Location: SCI 204

Labs

  • Labs offer a time for students to work on the group project, work on mini-assignments, and participate in required weekly group meetings with the course instructor.

  • Times:

    • Lab A: Tuesdays @ 1:05pm - 2:35pm ET

    • Lab B: Tuesdays @ 2:45pm - 4:15pm ET

  • Location: SCI 240

Course Staff

Instructor: Michael Wehar

  • Email: mwehar1@swarthmore.edu

  • Office Hours (tentative): Fridays @ 1:00pm - 3:00pm ET in SCI 270 and by appointment

Course Description

Description from Course Catalog:

  • Software engineering is the application of systematic, measurable, and disciplined approach to the creation of computer programs. In this course, students will learn how to plan, organize, and maintain large software projects. Topics include software development methodologies, design principles, collaboration techniques, the use of modern libraries and frameworks, quality assurance, and timeline management.

Learning Outcomes

  • Experience writing a formal project proposal including problem/solution, timeline, requirements, etc

  • Experience planning, managing, and executing a group software development project including communicating and overcoming challenges as a team

  • Developing technical communication skills to carry out basic documenting, technical writing, and presenting

  • Becoming an intermediate level Git users

  • Becoming comfortable with advanced topics in Object Oriented Programming

  • Becoming comfortable carrying out basic software testing and evaluations of code quality

  • Master the basic concepts behind full-stack web development including frontend development, backend development, and database integration

Other Course Sections

Chris and I are both teaching software engineering with similar material and learning outcomes based on the same course description. However, we are teaching software engineering from different perspectives and as a result students cannot mix lecture and lab sections between our two versions of the software engineering course.

Programming

In this course, you will learn how to program in Java. Many of the programming examples and questions from lecture, quizzes, and exams will be in Java. Some small programming assignments will need to be completed in Java.

Your group project does not need to use Java.

Reference Materials

Slack

We will be using Slack for general discussion and communication throughout the semester.

See the CS71 Slack Guide for more information.

Participation

Regular communication and collaboration are important parts of this course.

Students are expected to attend lectures, attend weekly meetings, contribute during weekly meetings, and be actively engaged with their classmates on Slack.

If you need to miss a lecture meeting, then you are expected to notify the course instructor. If you need to miss a weekly group meeting, then you are expected to notify the course instructor and your group.

Mini-Assignments

Small tasks and assignments will be assigned periodically. Some of the mini-assignments may need to be completed individually and some may need to be completed in groups.

Quizzes

Quizzes will be assigned periodically. Quizzes will contain a mixture of short answer questions and long answer open-ended questions.

Your submitted quiz answers should be your own individual work. You should not be communicating with classmates while you are taking a quiz. See academic integrity statement below.

Exams

There will be a midterm and a final exam (details will be provided).

Your submitted exam answers should be your own individual work. You should not be communicating with classmates while you are taking an exam. See academic integrity statement below.

Grades (tentative)

Grades will be computed based on the following percentages.

  • Participation: 5%

  • Mini-Assignments and Quizzes: 5%

  • Group Project: 50%

  • Midterm Exam: 15%

  • Final Exam: 25%

Scores will be posted on Moodle whenever possible.

Note that Moodle does not accurately compute a student’s total grade.

2. Course Content

Software Concepts

You will learn about the following software concepts:

  • Object Oriented Design

  • Software Architecture

  • Software Design Patterns

  • Code Style

  • Code Refactoring

  • Code Optimization

  • Debugging

  • Testing

  • User Experience

Modern Development Tools

You will be exposed to modern development tools for:

  • Version Control

  • Issue Tracking

  • Code Reviews

  • UML Diagrams

Group Project

The group project will make up a significant part of your course grade.

You will work in a group of 3-4 students on a software project that you propose (guidelines will be provided).

The group project will include the following:

  • Group Formation

  • Project Proposal

  • Project Tasks

  • Project Submission

  • Group Presentation

  • Individual Reflection

From the group project, you will gain experience working in a software team and learn methodologies related to:

  • Communication

  • Documentation

  • Presentation

  • Problem Solving

  • Project Planning

  • Workflow

See some past project ideas listed here: List of Projects

Tutorials

In an effort to introduce students to additional topics related to software engineering, there will be short lecture tutorials throughout the semester.

Some past tutorials have been on the following topics:

  • Multi-platform Web Development

  • Mobile Development

  • Multi-threading

  • Personal Projects

  • Open Source Projects

  • Software Deployment

  • Careers in Software

Select students may be eligible to lead a short tutorial on a specialized topic. Please notify the course instructor if you are interested in this opportunity.

3. Course Policies

Waiting List

For information on the Computer Science Department’s waiting list policies, please see here.

If you are currently on the waiting list for this course, then you should have received an email with more information. To remain on the waiting list, please attend lectures during the first week of class. If you are unable to attend, then please notify the course instructor for alternative accomodations. Students on the waiting list will not be assigned weekly group meetings.

Academic Integrity Statement

Academic honesty is required in all your work. Under no circumstances may you hand in work done with or by someone else under your own name. Discussing ideas and approaches to problems with others on a general level is encouraged, but you should never share your solutions with anyone else nor allow others to share solutions with you. You may not examine solutions belonging to someone else, nor may you let anyone else look at or make a copy of your solutions. This includes, but is not limited to, obtaining solutions from students who previously took the course or solutions that can be found online. The use of generative AI (e.g., chatGPT or GitHub CoPilot) is also considered to be unauthorized collaboration with an outside source and is a violation of our academic integrity policy.

You may not share information about your solution in such a manner that a student could reconstruct your solution in a meaningful way (such as by dictation, providing a detailed outline, or discussing specific aspects of the solution). You may not share your solutions even after the due date of the assignment.

In your solutions, you are permitted to include material which was distributed in class, material which is found in the course textbook, and material developed by or with an assigned partner. In these cases, you should always include detailed comments indicating on which parts of the assignment you received help and what your sources were.

When working on tests, exams, or similar assessments, you are not permitted to communicate with anyone about the exam during the entire examination period (even if you have already submitted your work). You are not permitted to use any resources to complete the exam other than those explicitly permitted by course policy. (For instance, you may not look at the course website during the exam unless explicitly permitted by the instructor when the exam is distributed.)

Failure to abide by these rules constitutes academic dishonesty and will lead to a hearing of the College Judiciary Committee. According to the Faculty Handbook:

"Because plagiarism is considered to be so serious a transgression, it is the opinion of the faculty that for the first offense, failure in the course and, as appropriate, suspension for a semester or deprivation of the degree in that year is suitable; for a second offense, the penalty should normally be expulsion."

This policy applies to all course work, including but not limited to code, written solutions (e.g. proofs, analyses, reports, etc.), exams, and so on. This is not meant to be an enumeration of all possible violations; students are responsible for seeking clarification if there is any doubt about the level of permissible communication. The general ethos of this policy is that actions which shortcut the learning process are forbidden while actions which promote learning are encouraged. Studying lecture materials together, for example, provides an additional avenue for learning and is encouraged. Using a classmate’s solution, however, is prohibited because it avoids the learning process entirely. If you have any questions about what is or is not permissible, please contact your instructor.

Note: The above statement was written through a collaboration between faculty members within the Computer Science Department.

Accommodations Statement

If you believe you need accommodations for a disability or a chronic medical condition, please contact Student Disability Services via email at studentdisabilityservices@swarthmore.edu to arrange an appointment to discuss your needs. As appropriate, the office will issue students with documented disabilities or medical conditions a formal Accommodations Letter. Since accommodations require early planning and are not retroactive, please contact Student Disability Services as soon as possible. For details about the accommodations process, visit the Student Disability Services website. You are also welcome to contact me (Michael Wehar) privately to discuss your academic needs. However, all disability-related accommodations must be arranged, in advance, through Student Disability Services.

Inclusion Statement

Diversity, inclusion, and a mutual sense of belonging are all core values of this course. All participants in this course must be treated with respect by other members of the Swarthmore CS community. We must all strive, students and faculty both, to never make anyone feel unwelcome or unsafe in any way. Violations of these principles are viewed as unacceptable, and we take them very seriously. If you ever feel discriminated against or otherwise excluded, no matter how minor the offense, we encourage you to reach out to your instructor, one of the college deans, or campus non-discrimination contacts.

Note: The above statement was written through a collaboration between faculty members within the Computer Science Department.

Late Policy

Students are expected to complete and submit their assignments by the assigned deadlines. Even if you do not fully complete an assignment, you should submit what you have done to receive partial credit.

Because this course focuses heavily on group work where tasks are different between groups, students are permitted to submit extension requests to the course instructor. Extension requests will be evaluated on a case-by-case basis. If an extension request is not submitted more than two days before the deadline, then it will be denied.

Recordings

Students should not record lectures or course related meetings without permission.