This is an introductory course in computer science, with an emphasis on problem solving and programming in Java. We will cover chapters 18, 10, and 12 of the text, as well as part of chapter 9. You will gain exposure to some of the fundamentals of computer science, including problem decomposition, algorithm design, software construction and testing, recursion, arithmetic and logical operations, conditional execution, classes, data structures, and object-oriented programming. While this course is about concept beyond one programming language, Java is the programming language that we will use, and you will become familiar with the syntax and structure of Java. You will gain experience programming individually, as well as in teams for small projects. This course is designed for majors and non-majors alike, and upon completion, you will have enhanced reasoning and logic skills, which will serve you well in many disciplines.
At the conclusion of this course, you will be expected to be able to:
One textbook is required for this course:
There may be additional articles and resources available through Moodle. Note that earlier editions of the book are fine for content, but that the problems at the end of the chapters may have changed.
By signing/typing the Honor Pledge, you assert that you have followed the applicable collaboration policies, understand all material (code and text) submitted, and are capable of recreating it without assistance. The point of pair/group assignments is for you to learn from each other, NOT for you to split up the work to do in isolation---work together, taking turns typing. Do NOT create multiple copies of the code at the same time on different machines (a good way to share copies of the same file is through Google Drive). There are several references on the class Moodle page which you may use for homeworks and projects; these are the only web resources you are permitted to use. It is a violation of the Honor Code to obtain code or materials from other internet sites for submissions in this course, or to use materials obtained in this manner. In general, unless otherwise specified, it is a violation of the Honor Code to obtain code from others (at SU or otherwise) or to consult materials from previous offerings of this course. For all problems, you (or your partner) must have written or typed the submission, and you must personally understand each submission well enough that you could recreate it on your own. For pair or group programming assignments, which will be clearly indicated, it is understood that any person in the pair or group may write any of the code (try to break it up evenly), but it may not be shared with other pairs/groups. If you are repeating the course, it is expected that you recreate solutions to all graded assignments from scratch.
Class attendance is expected and required. Assignments are still due regardless of attendance, and you are responsible for making up all missed in-class material. Feel free to come to office hours with specific questions, but lectures will not be repeated there, so I encourage you to acquire contact information from your classmates as soon as possible. Missing more than ten percent of a given class (arriving late, leaving early, sleeping or otherwise inattentive in class) may be considered an absence.
For each absence, you are expected to do the following:
Note that this policy applies to all absences, even those deemed excused under university policy (e.g. university-sponsored activities, absences due to religious and cultural traditions). The Excused Absence Policy requires students to notify the professor as far in advance as possible, and to complete missed work. Though university policy does not consider illness to be an excused absence, I encourage you to use your best judgment in such situations, particularly if you may be contagious. Extenuating circumstances that prevent you from contacting me in advance will be handled on a case-by-case basis.
If you have five or more unexcused absences (whether or not you have followed the procedures above), you may be involuntarily withdrawn from the course.
I expect you to be physically and mentally in class and prepared each day. You are expected to read the sections of the text assigned by the beginning of class on the date listed (i.e. actually read the book). While the Case Studies sections are not listed on the calendar, and will typically not be covered in class, you should read them at the end of each chapter as a means of synthesizing some of the new concepts from the chapter. Come to class with questions!
Working with others while programming is an important skill. Whether working alone or with others, you are expected to be respectful of your classmates and the instructor. There is something to be learned from every pairing, and you can learn as much (if not more) from explaining a concept as hearing about it.
Be willing to answer questions. Contributions that exemplify Paideia moments (where you “apply the thinking, modes of analysis, creativity, etc., from this class to either another class or to another aspect of life,” per President Burger) are highly encouraged. Remember that although we are learning the basics of computer science, programming and problem solving skills are actually tools that have important applications in the world beyond our class.
Your participation grade does not reflect that you always had the correct answer, but rather that you were prepared for class, involved and engaged in the classroom, physically and mentally present, focused on the course material, and respectful of others.
Regularly writing code is essential to mastering any programming language. As lower-level computer science courses are cumulative, you will have a much harder time in later weeks if you do not learn the earlier concepts. Assignments will typically involve writing small pieces of code and/or answering questions about concepts in Java. Progressively better documentation and formatting will be expected over the course of the semester, and will be reflected in the grade. Take note of my comments in class and on assignments throughout the semester.
Part of the assignment grade for the semester will be based on completing the required problems on MyProgrammingLab (MPL) by their specified due dates. MPL provides immediate feedback as to whether your answer is right or wrong, as well as suggestions for ways to improve it if it is incorrect (however, you should be aware that this feedback is not perfect). There is no partial credit for MPL problems, and they will all be weighted equally. Completing extra MPL problems beyond the minimum required is worth extra credit, and is strongly encouraged.
The remainder of the assignment grade will be based on all other problems assigned, some (but not all) of which will come from the textbook. Problems are worth 1 point, with no partial credit. Note that all required components must be included in order to earn the points. For example, code that successfully prints appropriate output but does not have any comments or does not use a stated data structure does not earn the point.
It is important to work with others to develop your understanding of topics and syntax, but to also demonstrate your ability to write and check code on your own. For homework problems only (projects have different rules), you may obtain assistance from anyone at Southwestern.
Most weeks there will be an assignment due Thursday by 11:55PM. Unless otherwise indicated, you must submit all assignments electronically (using Moodle or the indicated method). If technical difficulties arise, you may email them to me as attachments until the problem can be resolved. Submit .java files, not .class files (both because I need to be able to see your code and because .class files often get filtered as dangerous files without me ever knowing you sent anything). Make sure your filenames EXACTLY match what is requested in the problem description: DO NOT rename files right before submitting (they will not work), and NEVER leave a
package declaration in your code (a line at the top that starts with the word
You may turn in up to two homework assignments late without penalty, as long as they are submitted by 8:15AM the following Monday for an assignment due Thursday. (If an assignment is due on a different date, the late deadline will also be listed.) Late turn-ins are required by this time (immediately before class) so that I can cover homework solutions in class on Monday when necessary. Use late turn-ins wisely: no other late assignments will be accepted, barring serious extenuating circumstances. If you waste your late turn-in opportunities frivolously early on, then don’t have any left when something more serious happens later on, then you cannot use that emergency to justify yet another late turn-in. In general, you do not need to notify me if you are using a late assignment, but you may (via email) if you wish.
Quizzes may be given in class or on Moodle (announced or unannounced). No makeups will be given. The quiz grade will be computed by dropping the lowest three grades and averaging the rest, which means that quizzes missed due to university-excused absences should not negatively affect your grade. However, if university-excused absences cause you to miss more than three quizzes, then exceptions may be made. Let me know in advance if you anticipate missing this many quizzes due to university-excused absences (for example, if you are on a sports team). Unless otherwise specified, quizzes are to be completed individually, without assistance, and are pledged. You must email me immediately about any technical difficulties on Moodle that may occur as soon as they arise.
Projects allow you to develop larger pieces of code and use more complex designs than those in the weekly assignments. There will be three projects over the course of the semester. You will be required to incorporate knowledge learned across several class sessions, and you will also need to learn additional information not covered in class. Some of this information will be in the project descriptions, and the rest is information you must teach yourself via trial and error. This additional challenge is an intended part of the learning process, and an important aspect of being a computer scientist. Although it may be frustrating at times, the learning benefits are enormous. It is worth keeping in mind that, in the past, students entering this course at various levels of skill have successfully completed these or similar projects. They are within your ability to complete, especially keeping in mind that I am available in office hours to help you. You should visit me and/or official CS department tutors as early as possible if you are struggling with anything in the class, but especially if you are struggling with the projects.
Projects are pledged. If the specifications allow a project to be completed as a team, all members are asserting their understanding and ability to recreate the code they submit as part of the Honor Code. Additional details may be found on the project descriptions. Projects will have report components, and may also require you to schedule meetings with me, before and/or after the project is due, to explain aspects of the submitted code. Some projects also have post-project quizzes that specifically test your ability to recreate code from the project. Inability to recreate code on the quiz or in a meeting can be treated as an Honor Code violation. Projects never allow you to directly copy code from other students, but you may be allowed to let other students in our class and official departmental tutors look at your code and give you suggestions. However, all such interactions must be mentioned in your project reports to fulfill the requirements of the Honor Code... this means you must indicate both who helped you, and who you helped. In addition to mentioning sources of aid in your report, you should put comments in your code pointing out the specific parts of the code that others helped you with. You CANNOT get any help on projects from students (at SU or otherwise) outside of our current class, especially students who have taken the course in previous semesters (unless they are official departmental tutors). Late projects will be penalized 10 percentage points for each 24-hour period (or part thereof) after the deadline.
There are two in-class tests (tentatively scheduled for Wednesday September 28 and Friday November 4) and a final exam (scheduled by the registrar on Tuesday December 6 from 8:30a-11:30a), all pledged. Makeup tests and exams may be given under special circumstances, given advanced notice or justified reasons for absence, such as an appropriately documented illness, family emergency, religious obligation, or participation in a university-sponsored event. If you know you will be absent for a valid reason on a test or exam date, you must inform me as soon as possible so that we can arrange an alternate time for you to take the exam, preferably in advance of the rest of the class.
The grade cutoffs are listed here. They may be modified slightly at the instructor’s discretion, but only in your favor. In truly exceptional cases an A+ may be awarded. Absences may reduce the final grade, independent of these percentages. Note also that the SU course catalog indicates that in order to receive a C-, “All required work is expected to be completed for this grade.” For this course, this means that, at a minimum, projects 2 and 3 must each be submitted no more than a week late and with an average grade of at least 60% before any late penalties are applied, and that at least two-thirds of the other assignments are submitted by their respective deadlines (note that these are necessary, but not necessarily sufficient, conditions for earning a C-). For those taking the course on a P/D/F basis, earning at least a C- corresponds to a P. Failure to meet these requirements means it is impossible to earn a grade higher than a D.
You are expected to keep an electronic copy of any electronic submission until you receive a grade. Failure to reply to email queries in a timely manner (as specified in the email) regarding assignments incorrectly or incompletely submitted (e.g. wrong file attached) will result in no credit given for the associated assignments, or late penalties being assigned. Any concerns regarding grading of an assignment must be brought to my attention within a week of when the item is returned to the class or feedback/grades are posted on Moodle.
Cell phones are not to be used during class. Please set them to Do Not Disturb, not simply to vibrate. I strongly advise placing them in a bag rather than keeping them in a pocket or on your desk to avoid temptation. Should your phone ring, you must take it into the hallway and answer the call. It is expected that when in class you will use the computers for course activities (notetaking, writing code), not for websurfing, gaming, messaging, using Facebook, printing material for other courses, etc. You must obtain my explicit written permission to record any audio or video in the classroom. Since this course meets in a computer lab, food, drinks (except in lidded containers), and tobacco are prohibited. Please be courteous to those around you.
Southwestern University will make reasonable accommodations for persons with documented disabilities. You should contact the Center for Academic Success and Records to determine your eligibility to receive accommodations (Prothro Center for Lifelong Learning; 512-863-1286). Please notify me as early as possible about any required accommodations.
I will maintain a detailed calendar on Moodle, and you should refer to it regularly throughout the semester. Homework is typically due (electronically) on Thursdays at 11:55PM. I will try to adhere to the schedule as closely as possible, but all dates and details are subject to change. In particular, project lab days may be dropped to make time for covering course content if we drop behind in the schedule.
Assignments and ideas on this syllabus build on those from everyone who has taught it before, especially Jacob Schrum and Barbara Anthony. The template for this website was originally designed by Alex Godwin.