Lecture (CPSC 071 01)
Times: Mondays, Wednesdays, and Fridays @ 10:30am - 11:20am 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: Mondays @ 1:05pm - 2:35pm ET
Lab B: Mondays @ 2:45pm - 4:15pm ET
Location: SCI 256
Instructor: Michael Wehar
Email: mwehar1@swarthmore.edu
Office Hours (tentative): Fridays @ 12:30pm - 2:30pm ET in SCI 205B and by appointment
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.
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
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.
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.
We will be using Slack for general discussion and communication throughout the semester.
See the CS71 Slack Guide for more information.
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.
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 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.
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 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.
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
You will be exposed to modern development tools for:
Version Control
Issue Tracking
Code Reviews
UML Diagrams
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
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.
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 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.
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.
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.
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.
Students should not record lectures or course related meetings without permission.