# Syllabus

Welcome to CSC 321.01! The official course description for this course is:

Provides a foundation for “programming in the large” and developing high-quality software that meets human needs. Introduces the software lifecycle, agile development methods, professional tools, and software design principles. Includes hands-on laboratory work.

In other words, we help you learn the basics of software design and engineering.

## Course Format

This course is being offered in a non-traditional format. We will be relying on a MOOC and some online materials as part of the core “textbooks” for the course. We can then spend class time more on discussion and problem-solving based on the readings and videos from the MOOC. (Some people would call this a “flipped classroom.”)

This is also a course in which you should be developing professional skills and habits. Hence, some of the work in the class will require you to do exploration on your own. The College would probably call this an opportunity to “learn how to learn”. When you are stuck, I recommend that you follow the strategy of you must try, and then you must ask.

Historical evidence suggests that what you get out of the course depends on what you put into it.

The course meets two days per week for the first seven weeks of the semester. Note that this semester marks the fourth or fifth different scheduling model we have tried for the course. You are expected to do about nine hours of work outside of class each week. You may timebox that work.

## Learning Goals

By the end of this course, you should be able to

• apply agile software development methodology, tools, and practices in real-world team projects;
• contrast agile software development methodology with plan-and-document methodologies;
• build SaaS applications with the Ruby on Rails framework; and
• apply techniques for understanding and modifying legacy code.

## Important Warnings

Warning! The Berkeley CS 169 course that forms the underpinnings of this course keeps changing.

Warning! I continue to use Web tools that with which I am not completely familiar (e.g., edX, Jekyll). When things look wrong on this site or the edX site, please notify me ASAP.

Warning! Some students prefer readings. Some prefer videos. You should try both.

Warning! We are trying a new structure for the course. It feels a bit compressed to me, but I think we can fit everything in.

These policies are likely to change.

• Class participation: 20%. Much of class time is in discussion. I will evaluate you on the quality of your contributions.
• Journal: 40%. Following the lead of Davis and Weinman, I ask you to do a journal assignment after each reading, video, and/or tutorial. Journals are generally due at 8:00 p.m. on the night before class to give me time to reflect on them before class.
• Homework: 40%. These are timeboxed. If you spend the required time and document your efforts, you will get a minimum of 90% on a homework assignment. Homeworks will be due every few days.

The grading scale for this course will be:

A
94–100%
A-
90–93%
B+
87–89%
B
84–87%
B-
80–83%
C+
77–79%
C
74–77%
D
60–69%
F
0–60%

You may note that there are some gaps between ranges. I reserve the right to make decisions about which direction to “round” values in those gaps. I also reserve the right to adjust this scale during the semester. You will be notified of any changes, and the scale will not change in the final two weeks of the course. You may ask me for your current grade in the class at any point; I will happily give you my best estimate based on the current scale and graded work so far, but these estimates are not guarantees of a specific final grade.

## Attendance

Your classmates and partners depend on your contributions to learn new material and complete the required work for this course. Don’t let them down! You are expected to arrive on time and actively participate in every class.

Because your participation is so important, I will not grant excused absences except in exceptional circumstances. I will deduct 2% from your final grade for each absence and 1% for each time you are late to class. However, each student is allotted a 2% “penalty buffer,” so you may miss one class or arrive late twice with no impact on your final grade. This policy is intended to give you the flexibility to deal with brief illnesses or personal issues that require you to miss class.

If you need to miss more than one class period for an exceptional reason (e.g. to attend an academic conference, deal with a family emergency, or due to long-term illness) please talk to me as soon as possible and we will make an alternate arrangement.

If your are sick, please do not come to class. Stay in your room, rest, and seek medical care as needed. Student Health and Counciling Services (SHACS) offers health and mental health services to students.

## Participation

Because much of our work in this course involves collaboration and discussion, you will be evaluated on your participation. Participating in class involves:

• being present in class (physically and mentally)
• coming to class on time
• coming to class prepared
• making positive contributions to class discussion by volunteering and when called upon
• staying on task during lab exercises, and
• working effectively with your partner(s)

Students who regularly meet these criteria can expect to earn an A- for their participation grade. I will reward students who regularly provide significant insights or guide discussion in productive ways with a higher participation score. Students who fail to participate regularly (e.g., demonstrating a lack of preparation or involvement during lab exercises) or who participate in counterproductive ways (e.g., by dominating the conversation, making inappropriate comments, or getting off-task) can expect to earn a lower score.

Here’s what I expect you’ll be spending your time on each week

• Class time (4 hours)
• Programming and writing assignments (5 hours)

The first week may be a bit busier as you get set up.

## Communication

Dr. Davis created a Slack team for general discussion of CSC 321/2. Join it here: https://grinnell-sw.slack.com/. There is a #homework channel for discussion of homework assignments!

## Development

The course designers recommend that we do development on Cloud 9. Instructions are at https://github.com/saasbook/courseware/wiki/Setting-up-Cloud9.

The CSC 321 Course Web

The hypertext that you are currently reading. Right now, it looks like it will primarily contain my notes for each class (outlines) and my record of each class (eboards), but we’ll see.

Fox, Armando and Patterson, David (2016). Engineering Software as a Service: An Agile Approach Using Cloud Computing, latest edition.

Our core textbook. Fox and Patterson synthesized a lot of ideas to produce a textbook that grounds software engineering principles in a new model of computing. This textbook is rapidly evolving. I would recommend that you purchase the Kindle edition through Amazon, particularly since they are updating the textbook again this semester. (With the Kindle Cloud Reader, available at https://read.amazon.com/ or an appropriate app, you should be able to read the book on any electronic device.)

Fox, Armando and Patterson, David (2017). BerkeleyX: CS169.1x Agile Development Using Ruby on Rails - The Basics. Available online.

The underlying MOOC. You can use this MOOC for videos that correspond to the various readings. There are also many other resources available on the MOOC.

## Citations

Many parts of this overview, as well as the overall design of the course, are due to Janet Davis. I have reused materials with her permission.