Syllabus and Class Information
Com S 227
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.
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.
- Placement into Math 143 or Calculus. You'll be expected to understand
variables and functions and to do basic algebra.
- SE 185, or Com S 127, or a previous high school programming course, or
other programming experience. You should be able to use variables, conditionals, loops, and lists or arrays, and be able to create and use functions or methods, in some programming language. You don't have to know Java.
At the end of Com S 227 the students should be able to:
- Write, debug, and document well-structured Java applications of up to 500 lines
- Implement Java classes from specifications
- Effectively create and use objects from predefined class libraries
- Understand the behavior of primitive data types, object references, and arrays
- Use decision and iteration control structures to implement algorithms
- Write simple recursive algorithms
- Use interfaces, inheritance, and polymorphism as programming techniques
- Use exceptions
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.
- Managing files; using an integrated development environment
- Objects, classes, methods, fields, and constructors
- Primitive types and references
- Arithmetic expressions, String operations
- Overview of the software engineering process
- Unit testing with the JUnit framework
- Conditional statements and Boolean expressions
- Basic console and text file I/O
- One-and two-dimensional arrays
- Using a symbolic debugger
- Designing with interfaces
- Inheritance, polymorphism, abstract classes
- Exceptions and exception handling
- Searching and sorting
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.
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
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:
- For PAs and CAs, 80% completion will be considered full credit
- For external labs, we drop your two lowest scores
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.
- Ok, for a serious, extended illness or other unusual circumstances, exceptions may be made; please DO discuss the situation with your instructor.
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.
- PAs: 4% (80% completion counts as full credit)
- CAs and designated zyLabs: 4% (80% completion counts as full credit)
- External labs: 8% (lowest two are dropped)
- Miniassignments: 4%
- Homework assignments: 30%
- Exam 1: 15%
- Exam 2: 15%
- Final Exam: 20%
Specifically, you can calculate your overall score as follows:
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 above||A-
|80 and above||B-
|70 and above||C-
|60 and above||D-
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:
|General questions about the course
|Questions about Java or Eclipse
|Questions about the miniassignments
|Questions about the assignments
|Questions about the exams
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,
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.
- Find your name in the upper-right corner of the Piazza screen
- Click the drop-down menu and select "Account/email settings"
- Under "Class and email settings", find Com S 336
- Click on the link "Edit email notifications" in the small, blue font
- Edit as you see fit, e.g. "No Email"
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
You will almost certainly want to install this software, which is all free, on your
own computer. See
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:
- Exam 1 - week of September 21 (week 6)
- Exam 2 - week of October 26 (week 11)
- Final - MONDAY, NOVEMBER 23, 7 - 9pm
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.
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.
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.
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!
Academic Dishonesty Policy
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.
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
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).
- Look at another student's source code. (*)
- Allow another student to look at your source code. (*)
- Type in a solution with another student and each turn in a copy.
- Write a program on paper with another student and type it up separately.
- Divide the work so that you an another student each write part of a
program (for example, 3 methods each), then combine
them, and each turn in a copy.
- Discuss the code in detail with another student but type it in separately.
- Get code from the an outside source (such as a web site) and turn it in.
- Get code from the an outside source (such as a web site), modify it,
and then turn it in.
- Make available all or part of your code for someone else to see, whether
by paper, email, ftp, Piazza discussion, shared network folder, storing on a public
machine, letting someone else look at your screen, reading code out loud
while someone takes notes, posting in an online forum, etc.
- Give another student your password.
Things you may do when working with another student:
- Talk about, and write down ideas about, how to do an assignment, as
long as you do not write actual code or "pseudocode" or
specific steps of program logic.
- In short, you can talk freely about what the
program is supposed to do, but not about how to make it work.
- Share test code or test data files that will not be turned in.
- Share and discuss code that was presented as an example in
class or the text.
- Share and discuss code for programming assignments after the
"late deadline" for the assignment has passed (normally 24 hours
after the deadline, not counting weekends and holidays).
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.
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
email@example.com. 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 firstname.lastname@example.org, or the Office
of Equal Opportunity and Compliance at 515-294-7612.
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.
- Call 911 in an emergency. Report suspicious activity or objects to ISU Police at 515-294-4428.
- During a campus emergency, go to
www.iastate.edu for additional information.
- Classroom management emergencies
- Call ISU Police for immediate health/safety classroom concerns at 515-294-4428.
- For other concerns regarding classroom management, contact the instructor and/or chair of the academic department for guidance.
- Know the following information posted in your building
- Locate the evacuation routes
- Locate the severe weather shelter areas
- Keep your contact information up-to-date in the ISU Alert
- Additional emergency information is available at
- ISU PD Facebook (www.facebook.com/ISUPD) and Twitter (www.twitter.com/ISUPD)
- To be better prepared during an act of violence on campus and understand the principles of A-D-D (Avoid Deny Defend), please attend
Violent Incident Response Training (VIRT).
If you are experiencing, or have experienced, a problem with any of the above
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:
- wear a cloth face covering in all university classrooms, laboratories, studios, and other in-person instructional settings and learning spaces. Cloth face coverings are additionally required to be worn indoors in all university buildings, and outdoors when other people are or may be present where physical distancing of at least 6 feet from others is not possible. Students with a documented health or medical condition that prevents them from wearing a cloth face covering should consult with Student Accessibility Services in the Dean of Students Office.
- ensure that the cloth face covering completely covers the nose and mouth and fits snugly against the side of the face.
- practice physical distancing to the extent possible.
- assist in maintaining a clean and sanitary environment.
- not attend class if you are sick or experiencing symptoms of COVID-19.
- not attend class if you have been told to self-isolate or quarantine by a health official.
- follow the instructor’s guidance with respect to these requirements. Failure to comply constitutes disruptive classroom conduct. Faculty and teaching assistants have the authority to deny a non-compliant student entry into a classroom, laboratory, studio, conference room, office, or other learning space.
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.