Published using Google Docs
CSC-324-01 Spring 2024 Syllabus
Updated automatically every 5 minutes

CSC-324-01 Software Design and Development

link to this document: http://tinyurl.com/csc-324-24sp

About

Instructor: Leah Perlmutter

Instructor calendly: calendly.com/leahperl

Class meeting times: MWF 10:00 - 11:50 am, Noyce 3819

Mentor: Mae Bernacchi

Mentor sessions: Sundays 6:00 - 7:00 pm, Noyce 3819

Welcome to CSC 324, Software design and development!

For future students

If you're curious what kinds of projects you might work on in CSC-324, please see blog posts by CSC-324-01 spring 2024 teams.

Staff

Instructor: Leah Perlmutter

I'm a brand new baby professor, and excited to teach Software Design and Development for my first time! I grew up in Ohio, went to college in Maine, then moved to Washington state to work in software industry and get my PhD. My PhD dissertation is about students building a sense of belonging in college computer science, and it is deeply important to me to build a classroom that is welcoming to all. I have 14 year old tortoiseshell cat named Mocha.

Mentor: Mae Bernacchi

Hello! My name is Megan Bernacchi, but please call me Mae, and I am a fourth year double major in Computer Science and German Studies. I’m also on the SEPC for both of my majors! 324 is one of my favorite classes offered in the CS department and I am ecstatic to be a part of it! A fun fact about me is that I can solve five different kinds of Rubik’s Cubes!

And here's the link to my portfolio! It has all of my github links in it as well: tinyurl.com/maebernacchi

Learning Objectives

These learning objectives are common to all sections of CSC 324 at Grinnell:

  1. Acquire sound knowledge of software development focusing on software architectural design and requirements to architect a new solution.
  2. Produce software appropriate for inclusion in a portfolio via implementing the source code of new solutions or adding functionality to an existing one.
  3. Acquire experience with developing software solutions to meet a customer’s needs and understand how having a human in the decision-making loop impacts such an application. (The “customer” can either be a technical or a non-technical client.)
  4. Make deeper use of a collaborative version control system and work as a team to develop software solutions for a customer.
  5. Explain the practical and ethical problems associated with a real-world software project.
  6. Gain familiarity with Agile methodologies and apply Agile software development practices and tools to develop software solutions to meet a customer’s needs.
  7. Deepen analytical skills in testing and debugging source code.
  8. Create technical materials to represent and explain the code and design of built applications.
  9. Demonstrate the ability to employ active listening and team communication skills in the collaborative software development process.

Customers

In this section of CSC 324, the "customer" will not be a real person, but rather an abstract role played by your peers, mentor, and instructor to represent users who might use your product. We will use various exercises to take the perspective of software users other than yourself and support inclusive design.

You might have noticed that CSC 324 has the "Community Engaged" label in the Grinnell course catalog. This means that some sections of CSC 324 engage with community partners as the customers for software projects. This section will not have community partners.

Communication

Teams -- I will make most announcements on Microsoft Teams. The group channel is also a good place for course related Q&A. You are encouraged to use Teams to talk to your project group. Please confirm that you have been added to the Team for this class.

Email -- A few announcements will go out via email.

Getting in touch with the instructor -- If you have a question and others in the class could benefit from its answer, please post in teams. If you need to get in touch with me privately, use email or teams. I try to reply to messages within about 24 hours, excluding weekends and holidays. If you do not hear back within that amount of time, please send a reminder.

Gradescope -- You will submit assignments via gradescope. Please confirm that you have been added to this class on gradescope.

Rhythm of the class

Class meetings -- The class meets for 1h 50m, three times per week, for a total of 5h 30m per week. About half this time will be traditional classroom instruction with the instructor presenting material. The rest will be "lab time" where students complete exercises or group work. The amount of the class period used for instruction versus lab time will vary by day and by week.

Team meetings -- Some of our lab time will be dedicated to weekly meetings of your team, unstructured time for you to work on milestones and get help from the instructor and mentor.

Instructor and mentor meetings (check-ins) -- Each team will meet weekly with the instructor or mentor, during part of our lab time.

Deliverables

Project proposal -- Working in teams of 2, you will produce a written document and short video pitch describing a vision for a possible group project.

Proposal feedback and preference -- You will give feedback on some of the proposals and produce a ranked list of which projects you would like to work on. The instructor will choose which proposals become projects based on feasibility. The instructor will assign groups based on preference.

Group project milestones -- Working in teams of 4-6 students, formed in week 2, you will complete milestones every 2 weeks toward the design and development of your software. For each milestone, you will be putting into practice concepts from recent lectures.

Group project demos -- A few times in the second half of the semester, your group will present to the class by demonstrating features of your software and describing your development process.

Group project reports -- Your team will submit brief reports relating to your progress and process for each milestone.

Individual reflections and evaluations -- You will reflect on your own contributions to group work, your teammates' contributions, and your team's process.

Grading

Group work will make up most of your grade. More information forthcoming on the specifics of grading.

Attendance

I expect you to attend class every day, but you are not graded on attendance. If you need to plan absences for religious observance, athletics, travel, etc. let me know far in advance. Any day that you will miss class unexpectedly, please send me a chat or email message before class (or after class on the same day) so I know you're ok. If you miss a few days in a row, I'll start to worry about your wellbeing and how your absence might affect your learning and your team's success. Please stay home if you are sick.

Access Needs

I strive to meet access needs for everyone in the class. If you would like to talk about your access needs, let's chat!

AI Policy

AI Policy

Schedule

This schedule is approximate and subject to change. Bold indicates a milestone with a presentation.

Week

Topics

Milestone

1

Introduction, Project proposals, Doing software well

Proposals

2

Software development lifecycle, Requirements, User Stories

Group formation

3

Team group work norms, Prototyping

Requirements

4

Iterating on your design, Inclusive design

Prototyping

5

Agile development, Version control with Git

Feedback and Iteration

6

Data Modeling, Architecture, and Design

Github setup

7

Build Systems, Testing, and Continuous Integration

Design & Architecture

8

Testing

Testing and CI

Spring Break

9

Testing

10

Feedback and critique, Documentation

Release 1 and demo

11

Code Review

Iterating on feedback

12

Debugging

Code Review and demo

13

Software Licensing and open source

TBD

14

Presentations

Final Presentation

15

Finals week

Final release

Milestones and Presentations

Theme

Start date

End date

M1

Requirements & User Stories

Fri 2/2

Tues 2/6

M2

Paper Prototyping

Wed 2/7

Tues 2/13

M3

Feedback and Iteration

Wed 2/14

Tues 2/20

M4

Github Setup

Wed 2/21

Tues 2/26

M5

Design & Architecture

Wed 2/28

Tues 3/5

M6

Testing & CI

Wed 3/6

Tues 3/12

M7

Initial Release (spans spring break)

Wed 3/7

Fri 4/5

Interlude: Demo 1 Presentation

Wed 4/10

M8

TBA

Wed 4/10

Tues 4/16

M9

TBA

Wed 4/17

Tues 4/23

Demo 2 Presentation

Wed 4/24

M10

TBA

Wed 4/24

Tues 4/30

M11

TBA

Wed 5/1

Tues 5/7

Final Presentations

Wed 5/8 and Fri 5/10

M12

Final Release

Wed 5/8

Tues 5/14

Homework

Weekly Reports

Self and Teammate Evals

Final deadlines

Milestones and Assignments

Assigned Wed 5/8

In class 5/6

Assigned Wed 5/1

Assigned Wed 4/24

Assigned Mon 4/22

Assigned Wed 4/17

Assigned Wed 4/10

Assigned Mon 4/8

Assigned Mon 4/1

Assigned Wed 3/11

Assigned Wed 3/11

Assigned Wed 3/6

Reading Response (see Teams for PDF)

Assigned Wed 2/28

Optional exercise Mon 2/26

Assigned Wed 2/21

Assigned Wed 2/14

In class activity Wed 2/14

Assigned Wed 2/7

Assigned Mon 2/5

Assigned Fri 2/2

Assigned Wed 1/31

Assigned Mon 1/24

Assigned Mon 1/22

Attribution

This course is derived from University of Washington CSE 403: Software Engineering, specifically the offerings by René Just in Winter 2023 and Nigini Oliveira in Spring 2023, which in turn were derived from earlier offerings. Some material is taken from University of Washington CSE 331: Software Design and Implementation, specifically the offering by Leah Perlmutter in Summer 2018, which was derived from earlier offerings.