Syllabus

[Note: this webpage last modified Monday, 13-Jan-2014 10:20:34 EST]

Table of Contents

General Information
Announcements
Recorded Lectures
Purpose and Focus of Course
Grading, Assignments, and Expectations
Blackboard
Academic Integrity
Special Needs

General Information

Lecture: Tuesday and Thursday in A-017, Root Hall, from 3:30-4:45pm.

Final exam: April 29, 3-5pm.

Office hours: I am generally in my office and available most MWF's from about 8:30am-4pm. My official office hours are Wednesdays 9:30-11:30am. My office is A-129 Root Hall.

Instructor: Jeff Kinne

Website: http://cs.indstate.edu/~jkinne/cs201-s2014 (or browse for Jeff Kinne on http://mathcs.indstate.edu, or search for Jeff Kinne on google, bing, yahoo, etc. and find a link to the course website from his personal webpage).

Required text: How to Think Like a Computer Scientist, C++ Version by Allen B. Downey. We will finish parts of the book we didn't cover in 151. The text can be purchased, but it can also be downloaded free as a pdf from the link. Additional readings may be assigned from other online sources, for example The C Programming Language (2nd Edition)

There are very many online resources that you could find for learning to program with C. You could search on youtube for videos, search the web, etc. You could look for other C programming courses that have their information online, for example CS 50: Intro to CS I at Harvard (that course also covers Javascript and some other things that we probably won't cover).

Prerequisite: CS 151 with a C or better.

GA Lab hours: We have a few graduate assistants who will be in the computer science unix lab, room A-015 in the basement of Root Hall, for about 20 hours per week in total. You can go to this lab to work on your programs. The computers are unix machines, and you can use the cs151xx login that will be sent to you during the first week of class to use them. Or, you can bring your laptop to work on. Either way, you can ask the graduate assistants to look at your programs, and you can work with any other students that are there (you could use the lab as a regular meeting place to work with your classmates). The regular hours that the lab will be open are posted here on the department's website.

Course Announcements

Announcements regarding the course will be made both during class and via email to your @sycamores.indstate.edu email address. You should regularly check this email account or have it forwarded to an account that you check regularly. You can set the account to forward by logging into your indstate.edu email from Internet Explorer (the "light" version of the webmail client that opens up from Firefox or Chrome does not give the option to forward email).

Purpose and Focus of Course

CS 201 and 202 together should give you a solid foundation in "data structures and algorithms". The two courses continue to work on your programming skills that began with CS 151, but they also introduce key algorithms and methods of storing data that are used throughout computer science. The following is a sort of laundry list of topics that will be covered, and it may not mean much to you at the beginning of the course: arrays, structs, classes, dynamic memory, lists, stacks, queues, binary search trees, C++ classes and object-oriented programming. In addition to programming with these concepts, we will begin the study of algorithm efficiency and complexity.

The course will be structured around a number of "goal programs", which will require the topics listed above. The goal programs will all be fairly natural things you'd want to have a program for, and we'll write the programs in class - with the students finishing key portions.

Extra practice: For some C programming fun once you are comfortable with C later in the semester, try out some online programming competition/game stuff. For example, try out some practice problems from the ACM programming contest (go to ISU's programming contest page then click on either UVa Online Judge or ACM-ICPC Live Archive).

Grading, Assignments, and Expectations

The students of this course have the following responsibilities: read assigned readings before lecture, attend lecture, complete homework assignments, take exams, and complete a project. The final grade consists of:

The class attendance grade serves the purpose of giving you credit for coming to class. You benefit from coming to class by seeing me present the new material, getting to ask questions, interacting with your classmates, keeping up on what is going on in the course, etc.

The exams serve as benchmarks of your ability to relatively quickly solve problems related to the material. This helps me assign a grade, and also gives you motivation to pay attention and keep up with the assignments.

The weekly programming homework assignments are designed to solidify your knowledge by having you write programs.

The final project will be discussed further after the first few weeks of the semester. Students will choose a larger programming project that will be completed by the end of the semester and presented to the class.

Expectations. My expectation is that an average student will spend about 6 hours OUTSIDE of class each week (that is in addition to class time) WORKING PRODUCTIVELY/EFFICIENTLY (not just starring at the computer) to complete their coursework for this class. Some students may spend less time than this, and some students will spend more.

Classroom conduct. You may not use cell phones, iPods/music players, etc. during class. You should be civil and respectful to both the instructor and your classmates, and you should arrive to class a few minutes before the scheduled lecture so you are ready for lecture to begin on time. You may use your computer during class if you are using it to follow along with the programming examples that are being discussed. You may not check email, facebook, work on other courses, etc. during class.

Important Note. If you wait until the last minute to begin your homework assignments, I will not be available to answer questions if you have problems. Programming assignments are notorious in the sense that oftentimes most of the time completing the assignment occurs after you thought you had the problem solved. This is called debugging (and testing), and is typically most of the effort in completing a program. So you MUST start your homework early. I suggest attempting the assignment the day it is given, or the day after, so that if you have a problem you can ask early. If you continue to have problems in trying to complete the assignment, you will have time to ask again. Working on programming assignments is much less stressful if you start early!

Grade cutoffs

I make no promise ahead of time what the exact cutoff will be in terms of the number of points to achieve an A+, A, A-, etc. These will depend on how the course goes. I will use the guidelines below in assigning letter grades. After the first few weeks, I will include a "letter grade if the semester ended today" in your grades and for taking attendance. You can keep track of how you are doing in the course with the grades on the blackboard site for this course.

The following is roughly what I would expect by the end of the semester to earn a particular grade. This may not mean too much to you now, so you may want to check this again a few weeks into the semester.

Grading Programs

For the later programming assignments, I will assign a grade based on correctness and style. The exact breakdown may vary slightly from one assignment to another. In general, 60-70% of the points for an assignment will be given based on whether it is correct. The remaining 30-40% will be given based on good programming style: (i) choosing variable and function names that are descriptive/appropriate, (ii) writing code that is easy to understand and efficient, (iii) including documentation at the top of each file about what is in that file and how to use it, (iv) including documentation with each function describing what the function does (including what should be input to the function and what the function outputs), (v) documentation throughout each function describing the flow of the program. For portions of the code that are given to you, you do not need to add documentation to those parts of the code; if I give you partially completed code, you are responsible only for documenting the code that you add.

Blackboard

The course has a blackboard site. Click here to go to blackboard. You should see CS 151 listed under your courses for the current term. The blackboard site is only used for giving you your grades. All course content, schedule, etc. is kept on the instructor's webpage (which you are currently viewing).

Academic Integrity

Please follow these guidelines to avoid problems with academic misconduct in this course:

If cheating is observed, you will at the least receive a 0 for the assignment (and may receive an F for the course), and I will file a Notification of Academic Integrity Violation Report with Student Judicial Programs, as required by the university's policy on Academic Integrity. A student who is caught cheating twice (whether in a single course or different courses) is likely to be brought before the All-University Court hearing panel, which can impose sanctions up to and including suspension/expulsion. See the Student Code of Conduct and Academic Integrity Resources for more information.

Please ask the instructor if you have doubts about what is considered cheating in this course.

Special Needs

If you have special needs for the classroom environment, homeworks, or quizzes, please inform the instructor during the first week of classes. If you have any such needs, you should go to the Student Academic Services Center to coordinate this. See Student Academic Services Center - Disabled Student Services for more information.