CPSC270
Software Engineering and Project Design

Syllabus

A summary of the course objectives, content, policies, and schedule.

Instructor: Dr. Durell Bouchard
Office Hours: via Zoom by appointment
Office: Trexler 365-C
E-Mail:
Phone: 375-4901

Course Objectives


In previous courses, you have learned how to create programs, organize them with data structures, and analyze their computational complexity. These topics and skills provide the foundations for all other computer science classes. Real-world software projects are vastly more extensive and more complicated than the programs you created for these classes. Fortunately, there is an entire sub-discipline of computer science, software engineering, concerned with making the software development process more manageable. The techniques and tools you learn in this class will help you succeed in upper-level computer science classes, and more importantly, in software development when you graduate.

Intended Learning Outcomes: At the end of the course the successful student will be able to

  1. design and implement large software projects using a suitable software process model.

  2. review code for design, readability, and computational complexity.

  3. create appropriate and thorough test cases for a software implementation.

  4. use and understand the features of an integrated development environment including compiling, debugging, testing, and version control.

Course Content


Prerequisites: CPSC250

Text: Clean Code: A Handbook of Agile Software Craftmanship, by Robert C. Martin, Prentice Hall, 2008.

Project: The focus of the course is a semester-long software development group project. This project is designed to allow you to put together all of the software engineering tools and skills you have learned throughout the semester to develop a mobile app.

Activities: Activities during class give you a structured experience in software engineering and increase your ability to use and understand the tools available for software development. The activities connect the reading and lectures to software development and prepare you for the project.

Co-curricular: The Department of Mathematics, Computer Science, and Physics is offering a series of lectures designed to engage the campus community in discussions of ongoing research, novel applications, and other issues that face these disciplines. You are invited to attend all of the events but participating in at least three is mandatory. Within one week of attending an event, you must submit a one-page, single-spaced, paper (to Inquire) reflecting on the discussion. If you do not turn in the paper within the one-week time frame you may not count that event as one you attended.

Grading: Course grades are assigned based on the following weights and scale:

Grade Weights
Category Weight
Project 65%
Activities 32%
Co-curricular 3%
Grade Scale
Grade Range Grade Range
A 93-100 C 73-76
A- 90-92 C- 70-72
B+ 87-89 D+ 67-69
B 83-86 D 63-66
B- 80-82 D- 60-62
C+ 77-79 F 0-59

Course Policies


Zoom: Our class will be meeting synchronously, during our scheduled time block, via Zoom. The following are some suggested best practices based on student feedback from previous courses:

Attendance: Class attendance is vital to your success in this course. Conversations held in class illuminate the class materials and are necessary for completing the activities and project. If you anticipate being unable to attend class, email me before class to be excused.

Late Work: If you anticipate being unable to meet a deadline, email me before the deadline to request an extension. Unexcused late work will receive no credit.

Academic Integrity: Collaboration is a fundamental part of learning. You are encouraged to discuss and learn from one another while working on the activities. Collaboration on the group project, however, is different. Here your contributions must be attributed appropriately. Copying someone else’s work or turning in someone else’s work is NEVER allowed. Using someone else’s work or ideas as your own is plagiarism and an academic integrity offense. It is accepted that you have read and understood the standards for academic integrity at Roanoke College. If you are ever uncertain about how the policy pertains to any assignments in this course, please ask me for clarification.

Subject Tutoring: Subject Tutoring, located on the lower level of Fintel Library (Room 5), is open 4 pm – 9 pm, Sunday – Thursday. We are a Level II Internationally Certified Training Center through the College Reading and Learning Association (CRLA). Subject Tutors are friendly, highly-trained Roanoke College students who offer free, one-on-one tutorials in a variety of general education and major courses such as: Business, Economics, Mathematics, INQ 240, Modern Languages, Lab Sciences, INQ 250, and Social Sciences (see all available subjects at <www.roanoke.edu/tutoring>). Tutoring sessions are available in-person or online in 30 or 60-minute appointments (please specify if you prefer to meet with a tutor online or in-person when you make your appointment). All in-person appointments will maintain at least 6 feet of physical distance, desks will be cleaned between appointments, and masks must be worn in all indoor, public spaces. Schedule an appointment at <www.roanoke.edu/tutoring>, or contact us at 540-375-2590 or . We hope to see you soon!

Accessible Education Services: Accessible Education Services (AES) is located in the Goode-Pasfield Center for Learning and Teaching in Fintel Library. AES provides reasonable accommodations to students with documented disabilities. To register for services, students must self-identify to AES, complete the registration process, and provide current documentation of a disability along with recommendations from the qualified specialist. Please contact Laura Leonard, Assistant Director of Academic Services for Accessible Education, at 540-375-2247 or by e-mail at to schedule an appointment. If you have registered with AES in the past and would like to receive academic accommodations for this semester, please contact Laura Leonard at your earliest convenience to schedule an appointment and/or obtain your accommodation letter for the current semester.

Diversity: I consider this classroom to be a place where you will be treated with respect, and I welcome individuals of all ages, backgrounds, beliefs, ethnicities, genders, gender identities, gender expressions, national origins, religious affiliations, sexual orientations, ability – and other visible and nonvisible differences. All members of this class are expected to contribute to a respectful, welcoming and inclusive environment for every other member of the class.

Preferred Name/Pronoun: I will gladly honor your request to address you by an alternate name or gender pronoun. Please advise me of this preference early in the semester so that I may make appropriate changes to my records.

Course Schedule


This course expects you to spend at least 12 hours of work each week inside and outside of class.

Week Topic
1-2 Javascript
3-4 React
5-6 React Native
7 Version Control
8 Testing
9 Profiling
10 Project Management
11 Code Review
12 Clean Code
13 Clean Names
14 Clean Formatting
15 Projects
14 Demos

In place of a spring break this year, we will have the following days off from class:

Fri mar 19
Fri Apr 16
Fri May 7