CS 170 Introduction to Computer Science I, Spring 2009, Section 000

Lecture: TuTh 11:30-12:45pm MSC W201
Lab: Tu 4-4:50pm MSC E308A

Web: http://www.mathcs.emory.edu/~cs170000
Mailing List: cs170000-list@mathcs.emory.edu
Share Directory: /home/cs170000/share

Instructor: Li Xiong (lxiong@mathcs.emory.edu)
Office Hours: MTT 2-3pm at MSC E412 or by appointment
TA: Slawomir Goryczka (sgorycz@emory.edu)
Office Hours: TT 12:30-2pm and W 2-4pm at MSC N414 or by appointment

Overview

This course is an introduction to computer science for the student who expects to make serious use of the computer in course work or research. Topics include: fundamental computing concepts, general programming principles, the Unix Operating System, and the Java programming language. Emphasis will be on algorithm development with examples highlighting topics in data structures.

Textbook

Introduction to Java Programming, Brief Version, 7/E, Y. Daniel Liang, 2008

Prerequisites

There are no prerequisites although some familiarity with email and web browsers will be helpful. We assume knowledge of high school algebra and basic problem solving skills. This course is the first of a two semester sequence for computer science majors and is followed by CS 171.

Labs

We have one hour of scheduled lab time per week (Tu 4-4:50 pm in E308A MSC) but plan on spending considerably more time than that in front of a computer this semester (either in our lab or working from home). In the weekly lab we will focus on learning tool skills and practice and reinforce concepts learned in lecture by writing small programs. You will generally receive full credit for turning in a functioning lab assignment. Most labs will be due in two days. Please make every effort to attend labs.

Assignments

Programming assignments will involve designing, coding, testing and debugging non-trivial programs based on a written assignment specification. Programs involve a conceptual understanding of language features as well as skill with various software tools. With programming it is important to “work smarter, not harder.” Unskillful approaches can lead to long, tedious, unsuccessful hours of work. The right approach can help you write correct, easy-to-understand and efficient code with minimal effort. Programs must be completed individually although you are welcome to discuss general principles and concepts about the assignments with other students (and the instructor and TA!). You will be able to work on your programs in the Math/CS Lab (E308 MSC 10 am – 6 pm M-F) and from computers in your dorm or home.

Exams

We will have two closed-book midterm exams and a final that will test your conceptual understanding of the material and will require some attention to programming details. Doing well on the exams strongly correlates to reading and understanding the textbook! Questions will be a mix of filling in the blanks, multiple choices, and short answers. They will sometimes require you to write or analyze short bits of code. Old exams and study guides will be made available prior to each exam and solution keys will be provided after the exams.

Grading

Your grade will be determined by a weighted average of all the graded items. Grades will typically be curved so that the class mean falls in a B range. Although the numerical grade you receive for each assignment will be a raw uncurved score, you will be given the class median and mean for each exam so that you may gauge where you stand. It is very important to me that I see you making an effort. Coming to class, asking questions, and seeing me or the TA in office hours are all very good ways to demonstrate your interest in the material.
Component Weight

Programming assignments25
Lab exercises10
Midterms30
Final25
Class Participation10
Score Grade

93-100 A
90-92.9 A-
87-89.9 B+
83-86.9 B
80-82.9 B-
77-79.9 C+
73-76.9 C
70-72.9 C-
67-69.9 D+
60-66.9 D
0-59.9 F

Late Policies

All exams must be taken promptly at the required time. Requests for rescheduling a midterm exam will only be considered if the request is made prior to the start of the exam. Final can not be rescheduled.

Late labs will be accepted within 3 days of the due date and penalized 20% per day. Late assignments will be accepted within 6 days of the due date and penalized 10% per day. No extensions will be given. The rationale is to allow students to continue to work beyond the official deadline, while at the same time discourage students from falling significantly behind pace and jeopardizing their success on future assignments.

The above policies will be waived only in an "emergency" situation with appropriate documentation.

Honor code

All class work is governed by the College Honor Code and Departmental Policy. No collaboration is allowed on programming assignments unless you are asked to do a group assignment. Talking to other students about general Java features used in the programs is OK but you should not look at anyone else’s code or allow anyone else to look at your code prior to submission. It is actually very easy for us to detect inappropriate collaboration or copying by running programs that analyze your submissions so just don’t go there! If you feel dazed and confused just stop by office hours. We can get you back on track! Every program assignment must have the following comment included at the top of the file.
    /*
    THIS CODE IS MY OWN WORK, IT WAS WRITTEN WITHOUT CONSULTING
    CODE WRITTEN BY OTHER STUDENTS. _Your_Name_Here_
    */

Surviving and Thriving:

This class exercises both sides of your brain! You will need to develop a solid conceptual understanding of computer science and programming principles and the ability to express your understanding in an articulate manner. Exams test your conceptual understanding and programming assignments test your software development skills. Make sure you are making progress in both areas throughout the semester. There is very little time for new material to “sink in”. You must be disciplined, attend class regularly (you must be present to win), and keep up with the readings and assignments. Come talk to me or the TA in office hours or send email if you are having difficulty understanding. The material is very cumulative and if you don’t understand early concepts you will become quite confused later in the class. Effort is very important! Turn something in for each assignment, even if you don’t get it completely working.

Enjoy yourself and good luck!