link to this document: http://tinyurl.com/csc-324-24sp
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!
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.
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.
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
These learning objectives are common to all sections of CSC 324 at Grinnell:
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.
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.
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.
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.
Group work will make up most of your grade. More information forthcoming on the specifics of grading.
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.
I strive to meet access needs for everyone in the class. If you would like to talk about your access needs, let's chat!
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 |
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 |
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
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.