Fundamentals of Computer Science I

CS 2500, Spring 2014

  • Homepage
  • General
  • Texts
  • Syllabus
  • Assignments
  • Labs
  • Blog
  • Advice



General Information

Earning a Grade: A lot of you have one burning question on your mind as you start your college career:

How am I going to get an A in this course?
We have some news for you: you are in college now, and in college, it really is about learning something and not (just) getting a grade. As a matter of fact, if you are taking a course and the A comes easy, you are either cheating yourself or you are allowing the instructor to cheat you.

Here is the positive take-away from this section: College is your last chance to learn how to learn by yourself, without pressure from parents, teachers, or peers. You want to learn that, because the quality of your life depends on it. Your life. Nothing more, nothing less.

Naturally, we understand that you want some feedback, both in terms of specific corrections and in terms of a grade. You want feedback so that you can improve your learning process. And we will give you that feedback. It is our end of the bargain. Your end is to demonstrate that you actually use the methods and tools for learning that work best in our experiemce. After all, you don't want to waste your time, and we don't want to waste ours either.

So, if you wish to earn a grade in this course, you must print the Course Contract, sign and date it, and turn it in during your first lab session (CS 2501); you may not enter the lab without a signed contract. Your signature acknowledges that you have read and understood the contract and its implications. As long as you will live up to its spirit, we will stand by you during this semester.

People: In a large freshman course such as CS 2500 you typically encounter three kinds of people, listed in increasing order of relevance to you:

Instructors: Amal Ahmed & Leena Razzaq

Teaching Assistants:

TAs teach labs, supervise the grading of homework sets, hold office hours, and occasionally substitute in lectures. In general, they are apprentice teachers and are here to learn how to run a course.

Tutors:

Tutors hold office hours, grade homeworks and provide feedback about the class's progress. In general, they are undergraduate and graduate students who know that to learn something really well, you need to teach it.


Class: Class consists of lectures and lab meetings (CS 2501).

Lectures--The course has two lecture sections:

TimeLocationInstructor
MWR 10:30amShillman Hall 105Razzaq
MWR 10:30amShillman Hall 305Ahmed

You must sign up for one section and make an effort to attend this section on a regular basis.

Labs--The course also has three lab sections, aka CS 2501:

Time Location
W 11:45-1:25pm WVH 212
W 2:50-4:30pm WVH 210
W 6:00-7:40pm WVH 210


The labs start on Wednesday, January 15. You should have signed up for a lab section during registration; if you need to change your lab section, you must go to the registrar and change it there. You will attend your chosen lab section on a weekly basis. The purpose of labs is to give you some hands-on experience with the actual tools, and to explain some of the principles from lecture with hands-on examples.



Computing Environment: We will use DrRacket v5.3.6, a programming environment for the Scheme programming language, some dialects of Java, Algol 60, OCAML, and a few others. For CS 2500, we will stick to the HtDP teaching languages plus teachpacks. DrRacket is installed on the CCS computers. It is also freely available on the Web so you can install it on your own computer.

DrRacket runs on most popular platforms (Windows, Mac OS X, Linux, and other unix systems). Programs written in DrRacket have the same behavior on all platforms. You therefore do not need to worry what kind of machine you use when you run DrRacket programs.


Problem Sets: The purpose of the problem sets is to prepare you for the exams.

There will be weekly problem sets. Some problems are drawn from HtDP, the textbook; others are constructed for this instance of CS 2500.

We will drop the homework grade with the worst impact on your final grade from consideration for the final grade. Thus, if you just don't get it one week, nothing is lost. The story is different for the second or third or ... time. Late homework is not accepted.

You may only collaborate on problem sets with your partner (see below). You must acknowledge your collaborator/partner on your cover page. Any other collaboration is cheating; we will report cases to the university administration.


Pair Programming: You will work on some problem sets in pairs. We will assign you a partner. A few times throughout the semester, you may get a new partner.

Pair programming means that you and your partner work on the problem sets jointly. You read them together and you work on the solutions together. One of the lab's purposes is to teach you how to work in pairs effectively; indeed, pairs are notably more effective than individuals in programming. The rough idea is this: One of you plays pilot, the other co-pilot. The pilot works on the keyboard and explains aloud what is going on; it is the co-pilot's responsibility to question everything. After a problem is solved to the satisfaction of both, you must switch roles.


Exams and Quizzes: We will have three exams to assess your progress.

Exam 1: Thursday, Feb 6, 6-8pm, 200 Richards Hall
Exam 2: Thursday, Mar 20, 6-8pm, 168 SN
Exam 3:

These exam dates are tentative and may change depending on the pace of the lectures.

The exams will test material similar to that assigned in weekly homeworks. You will take the exams by yourself. Collaboration is not permitted. Absence from an exam will be excused only for medical or emergency reasons. A note from your doctor will be required. If you can solve every homework problem on your own, the exams will be easy. If not, you will have a difficult time. Exams are open book.

We will have a daily quiz. These quizzes get graded on a random basis; unselected quizes get thrown away.


Grades: For the final grade, we will assign a weight of 30% to the homework grade, a weight of 60% to the three exams and 5% for the quizzes. The remaining 5% are up to the instructors' whim. This final grade is applied to both CS2500 and CS2501.