CS 253 - Software Development - Fall 2021

Description

Developing software is the primary application of computer science. Very often, a good answer to the central question of computer science, "What can we do with computers?" is "We can do this," where 'this' is a software application that solves a problem or meets some need. With the CS I and CS II courses serving as introductions to computer science and its central tool, programming, this course serves as an introduction to the practice of software development, which is the application of programming to produce a complete, useful piece of software.

This course covers everything in that process from initially gathering requirements to delivering a final, working product and everything in between. We will learn about and practice effective processes and techniques used in software development and gain experience using development tools and methodologies for group work that make the process easier. The course culminates with a team project in which you will apply all of the above to create a software application much larger than anything else you have probably tackled until now.

As a writing-intensive course, we will spend a significant amount of time focusing on writing, and specifically writing about technical subjects in our field. We will "focus on writing as a process, with opportunities for revision" over several assignments to work on each student's writing and communication skills individually.

Upon completing this course, you will have gained the ability to conceive, plan, implement, test, debug, and document a complete software application, preparing you for projects in upper-level courses to come. You will be familiar with a wide range of tools that can make you a more effective programmer, and you will have significant experience with the particular set we employ in this class. While you may not always be developing the same type of software with the same language on the same platform, the experience will translate well to using similar tools you encounter in the future.

For an idea of the specific topics covered in the course, see the rough schedule for the semester.

Other Pages

Semester schedule — tentative - see Moodle for up-to-date details.

Moodle — assignments, quizzes, announcements, and other online resources will be here.

CS Codex resources for CS253 — collected resources and readings for this course.

Details

When/Where:
TR 11am-12:15pm / CNS E210
Instructor: Mark Liffiton
Office: CNS C207B   (2nd floor CNS, in middle of building over atrium)
Office Hours:
  • Tuesday 10-11am; 2:30-3:30pm
  • Wednesday 1-2pm
  • Thursday 10-11am; 2:30-3:30pm
During my office hours, I will be in my office as well as available in the #cs253 channel on Discord (see link on Moodle).
And generally, feel free to drop in any time if my door is open.
If your schedule prevents you from attending my set office hours or you would like to meet sooner than the next set time you are free, I will often be available on Discord, and I'm very happy to set up alternate meetings. Just ask.
Contact (you→me): We will use Piazza (see link on Moodle) for most course- and content-related questions. For anything specific to you, feel free to talk to me before or after class, meet me in office hours, stop by my office, catch me on Discord, or email (for email, please start the subject with "CS 253:").
Contact (me→you): I will post course announcements through Moodle, and they will be sent to your IWU email accounts. Check your IWU email frequently or have it forwarded to an address you do check.
TA: Drew Hiller
TA Office Hours: Tue 4-6pm (CNS E210), Wed 11am-1pm (CNS E201), Fri 9-10am (CNS E210) — also available on Discord during those times

In-person Classes

In-person classes will be held in CNS E210. Everyone in the classroom will be expected to follow the Titans Caring for Titans Pledge. In particular, this means everyone, students and instructor alike, will wear a mask over their mouth and nose at all times.

Textbook

There is no required textbook. We will use a variety of freely-available online resources and others I provide. If you prefer physical books, talk to me for recommendations.

Grading

The final grade will be based on the following breakdown:

Quizzes15%
Assignments30%
Final Project50%
Engagement5%

Quizzes

Quizzes will be short and frequent. Each will cover a small set of recent topics and/or the readings and pre-class work for a class period. Quizzes will be administered via Moodle. Your lowest quiz score will be dropped.

Assignments

Assignments will be posted on the course's Moodle site, and they will be collected there as well. Submissions on Moodle will generally need to be in the form of a PDF* for writing assignments or a compressed archive for other types. Some assignments may be submitted via checking in code to a version control system. Each assignment will include specific submission instructions.

Late Policy

Assignments will be due at set times; they will be considered late at any point after that time. An assignment will lose 10% of the total possible points for every day or partial day it is late, and after five days it will not be accepted.

Assignments can't be accepted at all after solutions have been handed out or the graded work has been returned to the class.

Grace Tokens

Every student has two "grace tokens" that they may use for extensions in instances where they are unable to complete work by the assigned deadline. To use a grace token on an assignment, contact me before the assignment deadline, explain why you need an extension, and we will determine an appropriate extension, which will be granted with no grade penalty. Some assignments may not be eligible for grace tokens due to immediate use of or feedback on the submitted work, but most will be.

Regrading

If you would like to request a regrade, submit a request to me in writing (via email) within one week of receiving the graded assignment, quiz, etc. Indicate exactly which part you believe deserves a different score and why.

Engagement / Attendance

Class time will be complementary to the reading, and you will need both in order to learn all of the material in this class. Many class sessions will involve material and/or practice that you will not be able to find or make up elsewhere. Furthermore, each student benefits from the engagement of all others in the class. Part of your final grade will be based on that engagement. Attending every class period on time and prepared will earn a base of 70%; points can be gained by constructive participation, in class or out, such as asking questions, answering them, responding on Piazza or Discord, sharing insights or useful/interesting resources with the class (posting on Discord, for example), investigating concepts beyond the requirement in class, working on small independent learning projects, and in many other ways. Points can be lost for excessive (more than 3) unexcused absences, disrupting class (e.g., regularly showing up late), poor participation in group exercises, and the like.

Absences can be excused with documentation from health services or the Dean of Students' office, or if arrangements are made with me more than a week in advance. In general, if you know you will be missing a class, let me know as soon as you can.

Working with Others; Using External Resources

I strongly encourage you to form study groups with your classmates, compare notes, explain concepts to one another, and generally help each other learn the material in this course.

In general, you may discuss assignments with other people and help each other out by reviewing writing or code for each other, but anything you turn in for a grade needs to reflect your own understanding. For every assignment, you should provide a brief statement indicating what help you received, if any, and from whom you received it. Simply copying work and giving away solutions are not allowed.

Try to follow this rule of thumb: No matter what help you received figuring out the concepts involved, when you turn something in you should be able to reproduce the whole thing, working through the assignment again, without any outside help. If you can't, you will have trouble on quizzes, later assignments, etc.

When working on code, it is common to find solutions to small problems you have on sites like StackOverflow, technical blogs, or Github. You may use code you find in these situations provided that both 1) it is only a small snippet, up to maybe ten lines of code long, and 2) you clearly and accurately cite the source of the code you are using in a comment nearby. Explain where you found it (with a URL) and what problem it is solving for you. And for your own sake, make sure you understand it. Cargo cult programming is a terrible coding practice, and it will result in painful debugging sessions.

When working on writing, copying from other sources is not allowed at all; that is simply plagiarism. You may quote and paraphrase, but you must avoid plagiarism.

Some assignments may have more specific rules than these about what collaboration or re-use is allowed.

For details on the university's policies regarding academic honesty, please read the sections of the student handbook on conduct, cheating, and plagiarism. Cheating of any form can result in failing the course and a report to the associate provost. If you are ever unsure of whether something might be crossing that line, just ask me, and I'll be happy to provide guidance.

Accommodations

Illinois Wesleyan University strives to make all learning experiences as accessible as possible. If you anticipate or experience academic barriers based on a disability (including mental health and chronic or temporary medical conditions), it is your responsibility to register with Disability Services. Please note that accommodations are not retroactive and accommodations cannot be provided until I receive an email from Disability Services. Once the email is sent, please make arrangements with me as soon as possible to discuss your accommodations confidentially so they may be implemented in a timely fashion. For more information contact Disability Services by visiting 110 Holmes Hall, calling 309-556-3231, or emailing cshipley@iwu.edu.

Diversity

Our university's mission statement includes, "The University through our policies, programs and practices is committed to diversity [...]" Our school and this course are made stronger by the mix of people that come into it bringing a diversity of ideas, experiences, and backgrounds. I expect everyone in this course — instructor, TA, and student — to contribute to an inclusive atmosphere that respects the diversity of all others in it. Dimensions of diversity can include sex, race, age, national origin, ethnicity, gender identity and expression, intellectual and physical ability, sexual orientation, income, faith and non-faith perspectives, socio-economic class, political ideology, education, primary language, family status, military experience, cognitive style, and communication style. The individual intersection of these experiences and characteristics must be valued in our community. If you have related concerns about the class environment or behavior of any in it (including me), you are welcome to raise them with me, and I will do my best to address them. If you are not comfortable speaking with me about them, you may also bring concerns to the Provost or the Office of Diversity and Inclusion.

End-of-Syllabus Advice

Explore. In this class, we will learn about and use a variety of tools and techniques used in modern software development practice. Of these, we will directly learn about and practice with just a specific few and not even the full extent of each. For example, we will learn the basics of using version control software to track and manage revisions to code over time, but the full power of the software extends far beyond what we will focus on in class. And beyond that, there are many other version control programs out there that all have different features and capabilities. So my final advice for you here is to explore the topics of the course beyond the bare minimum requirement. Poke around in a tool we study, read its documentation, find videos demonstrating its use, and otherwise learn about all that it can do. Look up other, similar tools, and try to find comparisons between them. Read about how others apply the techniques we learn about and what benefits they get from that. Overall, recognize that we're looking at a way to develop software, not the way, and it's important to be familiar with extensions and alternatives to what we do in this class.

page last updated Sep 24, 2021