Syllabus and Class Information
Com S 227
Fall 2020

This is not an introductory programming course! If you don't have prior coding experience, consider taking Com S 127 instead. See the course content section for details.

Note: Remember to refresh your browser to see updates to this document.

Quick Links: Prerequisites  Content  Piazza  Software  Textbook  Exams  Grades  Homework  Attendance  Academic Dishonesty 

Meeting times

The current plan is that lectures and labs will meet at their scheduled times via Webex or Zoom. You are strongly encouraged to attend and participate but you will not be penalized if you can't make it. Lecture sessions will be recorded and should generally be available to view through Canvas within about 24 hours. (Check Canvas announcements for Webex/Zoom meeting details.)


Section A: MWF 1:10 - 2:00 (Steve)
Section B: MWF 3:20 - 4:10 (Steve)
Section C: MWF 9:55 - 10:45 (Don)
Section E: MWF 3:20 - 4:10 (June)


Labs will start the second week of classes.

Everyone should be registered for one of the numbered lab sections (1 through 14) in addition to one of the lecture sections (A, B, C or E). The lab is scheduled for a two-hour period once per week. In practice there will be sessions altogether.


Steve Kautz (Lecture section A and B)
Departmental web page
ISU email: smkautz

Don Stull (Lecture section C)
ISU email: dstull

Sayantani (June) Ghosh (Lecture section E)
ISU email: ghosh

TA contact information and all office hours are posted here.


Course content


At the end of Com S 227 the students should be able to:

Major topics covered

Many introductory programming courses have a similar list of topics, but in practice tend to cover them with less depth and with less attention to the discipline of specification and testing, and tend to have shorter programming assignments.

If you want a more detailed look ahead, check out the archive from a prior semester. In particular, if you think Com S 227 might be too easy for you, e.g., try doing Homework 4.


We are using an interactive textbook service called zyBooks, along with an automatic code grader called zyLabs. The book includes self-check exercises called "participation activities", or PAs, and short programming problems called "challenge activities", or CAs. Additional zyLabs-based problems will also be designated as additional CAs, and some zyLabs-based problems will be assigned as mini-homework assignments.

The zyBook service is provided through the ISU bookstore's "early access model", which means that if you are registered for the course, you have already have access to it (and it's on your u-bill). You have 10 days from the start of classes to opt out and get a refund - but don't do it unless you are dropping the class! The CAs and PAs and zyLabs are together worth about 12% of your grade. It's a service, not a physical book, so you need to have your own account - you can't share it, there are no used or free versions, and you can't get it cheaper anywhere else.

The zyBook service is integrated with Canvas, so you don't need to create a separate login with zyBooks to use it: just go into the Modules section on Canvas, open the first module, and click one of the zyBook links.

Supplemental text

If you want an additional reference, or if you are just the kind of person who is comforted by having physical books, the text we have used in the past is:

Cay Horstmann, Java Concepts (Early Objects), 7th/8th edition OR Cay Horstmann, Big Java, 6th edition
The two books are essentially identical for the first 15 chapters (which include everything we cover in this course). Older editions, back to Big Java 4 or Java Concepts 5, are fine too.

Deadlines and attendance

We strongly encourage you to attend and participate in the virtual lecture and lab sessions. You'll be able to talk to people, ask questions, and impose a wonderful bit of structure on your days in relative isolation! However, you will not be penalized if you can't make it. Lecture sessions will be recorded and should generally be available to view through Canvas within about 24 hours.

Instead of taking attendance, we monitor daily class participation through the zyBook participation activities (PAs) and challenge activities (CAs) as well as the checkpoints for the external labs. In general, PAs for assigned sections are due before class, and the CAs (along with any designated zyLabs) are due two days later by midnight. The checkpoints for external labs are due 6 days after your scheduled lab period. (Note: Since the checkpoints must be reviewed with one of the TAs during office hours, the actual deadline for doing so will be the last TA office hour on the 6th day.)

The Equal Opportunity Deadline Policy

If you miss a deadline for the PAs, CAs, or external lab checkpoints, it's a zero. You can oversleep, go to the beach, perform in the symphony, attend a funeral, fly to Afghanistan with the ISU Beef Team, or more to the point, get Covid-19, and whatever the reason, we promise not to discriminate. Therefore you do not ever need to provide excuses and we don't want them. We see your lips move, but we cannot hear you.

To allow time for illness, sloth, or Important Life Events, the policy is as follows:

Choose wisely.

The regular homework assignments or miniassignments have their own deadlines and late policies, and have a longer lead time. So start early. If you procrastinate until the deadline and then get sick, no one is going to feel sorry for you.


Letter grades will be based on an overall weighted average of the three exams, the homework, the labs, and the zyBook PAs and CAs, with the following weighting.

Specifically, you can calculate your overall score as follows:

overall = 
pa * .04 +
ca * .04 +
labs * .08 +
minis * .04 +
homework * .30 + 
exam1 * .15 + 
exam2 * .15 + 
final * .20
where each of the above values is a number between 0 and 100 representing your score for that category:
pa = 100 * min(your pa points, max_pa_points) / max_pa_points
ca = 100 * min(your ca points, max_ca_points) / max_ca_points
labs = 100 * (sum of your points from your best six labs) / 60
minis = 100 * (sum of your miniassignment scores) / (total points for all miniassignments)
homework = 100 * (sum of your homework scores) / (total points for all homework)
exam1 = 100 * (your Exam 1 score) / (Exam 1 total points)
exam2 = 100 * (your Exam 2 score) / (Exam 2 total points)
final = 100 * (your final exam score) / (final exam total points)
max_pa_points = .80 * total points for all participation activities
max_ca_points = .80 * total points for all challenge activities and designated zylabs

(The total points for homework is usually about 900).

Please remember that your "score" as reported by Canvas will be wildly inaccurate at first, since most of the points will be recorded in the latter half of the semester. In addition, you have to be careful how you direct Canvas to treat blank scores.

Letter grades are not assigned until the end of the course. We can promise that your grade, determined by the overall weighted average described above, will be at least the grade given by a standard 10-point scale, that is,
90 and aboveA-
80 and aboveB-
70 and aboveC-
60 and aboveD-

In practice the scale above may be "curved" very slightly. An approximate guideline is that the overall median score for students completing the course will be at least a B-.

Piazza and Canvas

We will be using Canvas for course announcements, homework submission, and grades. All students are expected to check Canvas every day for announcements about the course, homework, or exams.

For online discussion and help, we will be using a forum called Piazza. For access to Piazza, just log into Canvas, go to the Com S 227 page, and click on "Piazza" in the navigation menu at left. You'll be asked to choose a password that you can then use to log in to Piazza outside of Canvas. If you have previously created a Piazza account using your ISU email address, you should be able to use that same account.

The Piazza Q & A

The most useful aspect of Piazza will be the question-and-answer discussion forum. This is the first place to look when you have questions about a homework assignment, about the course or about Java in general. As you familiarize yourself with Piazza, you'll find that you can easily search the posts using any word or phrase, but you can also search using special tags called folders. For example, any posts that concern Exam 1 should be tagged with exam1 to make it easy to find them. Whenever you post a question on Piazza, you'll be prompted to select one of the pre-defined folders for it. For example, here are the folders that we'll be using this semester:

generalGeneral questions about the course
javaQuestions about Java or Eclipse
miniassignment1, miniassignment2, etc. Questions about the miniassignments
assignment1, assignment2, etc. Questions about the assignments
exam1, exam2, final Questions about the exams
otherAnything else...

Turning off Piazza email notifications

By default, Piazza sends out periodic emails. It is easy to turn these off. After you sign up for Piazza,
  1. Find your name in the upper-right corner of the Piazza screen
  2. Click the drop-down menu and select "Account/email settings"
  3. Under "Class and email settings", find Com S 336
  4. Click on the link "Edit email notifications" in the small, blue font
  5. Edit as you see fit, e.g. "No Email"
Note that even if you select "No Email", you may still get course announcements that we believe to be either urgent or important. We will keep this to a minimum.


We will be using the Java programming language for this course, specifically version 11 (or later). In addition we recommend using a development environment called Eclipse for editing and debugging Java code.

You will almost certainly want to install this software, which is all free, on your own computer. See these instructions for more details.

Java and Eclipse are also available via Remote Desktop using the CS department terminal server. The first lab discusses how to access it.


Exam details are currently being worked out with the university. Stay tuned.

You can expect three online exams:

Homework Assignments

Important note regarding Dead Week (aka Prep Week): The last programming assignment will be due on November 20th, the last day of classes, and may not be submitted late.

See this document for detailed homework submission instructions.

Programming assignments will be posted on Canvas in the Assignments section.

Assignments and Miniassignments

In addition to the zyBooks PAs and CAs, there are two kinds of homework, assignments and miniassignments. Miniassignments are generally short exercises focused on one technique, and will be automatically graded using the zyLabs environment.

The "regular" assignments are longer and often involve several interacting components. We will read and evaluate your code in addition to running functional tests, so it is possible to assign partial credit even if there are errors.

We expect to have four of the regular assignments and three miniassignments.

The clarification thread

The homework specifications may also include design issues that require further clarification, and it is part of your job to identify such issues and resolve them (well in advance of the deadline). You are strongly encouraged to post questions about the homework specifications on Piazza for discussion. Clarifications that are believed to be relevant to all students will be posted on Piazza as an instructor note labeled as an "official clarification". All official clarifications that are posted more than 24 hours before the assignment deadline are considered part of the homework specification and you may lose points if you ignore them.

Documentation and style

Documentation and style will count for 10 to 15 percent of each assignment. Additional details will be provided with the assignment spec.

Early/Late policy

Unless otherwise specified, homework may be turned in up to 24 hours late with a 10% penalty, and after that it's a zero. Exception: the last assignment of the semester is normally due on the last day of classes and may NOT be turned in late.

In addition, there is a 5% bonus for turning in an assignment 24 hours early.

Submissions and feedback

All homework scores will be posted for you on Canvas. For the assignments, additional feedback is provided in the form of attached text files indicating where points were taken off and showing the results of whatever functional tests we performed. To see the attached file or files, go to your "Grades" page on Canvas and open the comments.

If you have questions about the grading or if you feel an error has been made in grading your assignment, first contact the TA that graded it, either during office hours or by email. In particular, requests for regrades must be made within one week of the date when the results were made available on Canvas. If you are not satisfied with the response from the TA, please contact your instructor promptly. If necessary, your homework will be regraded. Note that a regrade may result in a lower score.

Correct submission of homework is your responsibility. Remember that when submitting an assignment via Canvas, you can immediately check whether the submission was successful, and you can always download your submission and verify that it is what you intended.

Click here for detailed submission instructions.

Please note that it normally takes about three weeks for the staff to grade all the submissions for an assignment!

The class will follow Iowa State University's policy on academic dishonesty. Faculty are required to report apparent or suspected incidents of academic dishonesty to the Dean of Students Office. See

What is academic dishonesty?

Unless specifically instructed otherwise, every assignment for this course is to be the product of your own intellectual effort and is to be done on your own.

If you turn in work that was based on or copied from someone else's work, you have committed plagiarism, which is one form of academic dishonesty. However, you are also responsible for academic dishonesty if you allow someone else to copy your work or otherwise provide information.

Anyone found responsible in an academic dishonesty case will receive an automatic F in this course.

How to avoid academic dishonesty

There is a simple guideline for this course that covers most cases:

Don't look at anyone else's code.
Don't let anyone look at your code.
Don't talk about the code at a level of detail that might lead to the same solution.

Here are some more specific examples of things you may not do when working on an assignment:

(*) Exception: code may be shared after it can no longer be turned in for credit. For programming assignments, this means after the "late deadline" (normally 24 hours after the deadline, not counting weekends and holidays).

Things you may do when working with another student:

A W-W-W-Warning

Just as a word to the wise, note that random examples you find on the web are likely to mislead you more than help you, since those who post them have no idea of the ideas and techniques being covered in our particular class. You will be much better off reviewing examples from class and posting your questions on the Piazza discussions, where the instructor, TAs, and other students going through the same experience can help you.

Disability Accommodation

Iowa State University complies with the Americans with Disabilities Act and Sect 504 of the Rehabilitation Act. If you have a disability and anticipate needing accommodations in this course, please contact (instructor name) to set up a meeting within the first two weeks of the semester or as soon as you become aware of your need. Before meeting with (instructor name), you will need to obtain a SAAR form with recommendations for accommodations from the Disability Resources Office, located in Room 1076 on the main floor of the Student Services Building. Their telephone number is 515-294-7220 or email Retroactive requests for accommodations will not be honored.

Prep Week (aka Dead Week)

This class follows the Iowa State University Prep Week policy as noted in section 10.6.4 of the Faculty Handbook. In Com S 227 there will be an assignment due at the end of prep week.

Harassment and Discrimination

Iowa State University strives to maintain our campus as a place of work and study for faculty, staff, and students that is free of all forms of prohibited discrimination and harassment based upon race, ethnicity, sex (including sexual assault), pregnancy, color, religion, national origin, physical or mental disability, age, marital status, sexual orientation, gender identity, genetic information, or status as a U.S. veteran. Any student who has concerns about such behavior should contact his/her instructor, Student Assistance at 515-294-1020 or email, or the Office of Equal Opportunity and Compliance at 515-294-7612.

Religious Accommodation

If an academic or work requirement conflicts with your religious practices and/or observances, you may request reasonable accommodations. Your request must be in writing, and your instructor or supervisor will review the request. You or your instructor may also seek assistance from the Dean of Students Office or the Office of Equal Opportunity and Compliance.

Emergency Awareness

Contact Information

If you are experiencing, or have experienced, a problem with any of the above issues, email

Required statement on COVID-19 health and safety requirements

Students are responsible for abiding by the university’s COVID-19 health and safety expectations. All students attending this class in-person are required to follow university policy regarding health, safety, and face coverings:

These requirements extend outside of scheduled class time, including coursework in laboratories, studios, and other learning spaces, and to field trips. These requirements may be revised by the university at any time during the semester.

In accordance with university policy, instructors may use a face shield while they are teaching as long as they are able to maintain 8 feet of physical distance between themselves and students during the entire instructional period. Some form of face covering must be worn at all times in learning spaces regardless of the amount of physical distancing.

Faculty may refer matters of non-compliance to the Dean of Students Office for disciplinary action, which can include restrictions on access to, or use of, university facilities; removal from university housing; required transition to remote-only instruction; involuntary disenrollment from one or more in-person courses; and other such measures as necessary to promote the health and safety of campus.

It is important for students to recognize their responsibility in promoting the health and safety of the Iowa State University community, through actions both on- and off-campus. The university’s faculty asks that you personally demonstrate a commitment to our Cyclones Care campaign. Iowa State University’s faculty support the Cyclones Care campaign and ask you personally to demonstrate a commitment to our campaign. Your dedication and contribution to the campaign will also protect your family, classmates, and friends, as well as their friends and families. Our best opportunity for a successful fall semester with in-person learning and extramural activities requires all of us to collaborate and fully participate in the Cyclones Care campaign.