version $Revision: 1.9 $
Copyright © 2004 Department of Computer Science Rochester Institute
All Rights Reserved
This course is the third course in the computer science introductory sequence and builds upon the computer science foundations and design principles presented in Computer Science 1 and Computer Science 2. Students will learn how to use linear data structures, such as stacks, queues, and lists and non-linear data structures, such as trees and graphs, and will also be introduced to the design and analysis of algorithms. Students will learn how to analyze the efficiency of basic sorting, searching, and hashing algorithms, and acquire an understanding of how recursion works. Object-oriented programming will be used to design solutions and implement them as Java programs. Programming assignments - labs and projects - are an integral part of the course.
Prerequisite for this course is: 4003-232 Computer Science 2
The course consists of the activities shown below, which are weighted as indicated to compute the final grade:
Please note that if you have questions about the grading of any exam or project or lab, you must bring it to your instructor's attention within one (1) week after the graded material (in class for exams and projects; through e-mail for labs) has been handed back. After that time, your right to appeal will have expired and no grade adjustments will be considered!
This course uses the
traditional 90/80/70/60 percentage-based grading scale.
Each instructor reserves the right to alter these division points as they see fit at the end of the quarter if they believe it to be necessary, based on the overall evaluation of individual or class performance and effort.
This course has essentially the same format as Computer Science 1 and 2: there are three hours of lecture and two hours of lab each week. It is required that each student register for one section of the lecture and one section of the lab. You do not have to take the lecture and the lab from the same instructor. The lab instructor is responsible for giving you grades on labs. The lecture instructor is responsible for giving you grades on exams, projects and the final exam. It will be the lecture instructor who assigns your final grade in the course. If you have any questions regarding your registration, consult your instructor or the staff in the Computer Science office (70-3005) immediately. Finally, while there may be other sections of both the lecture and lab, it is not a smorgasbord. You must attend the sections for which you are registered or you will not get credit for your work.
Lectures are held in the classrooms shown on your schedule. You are expected to attend all lectures; attendance records will be kept. Labs are held in one of the Instructional Computing Laboratories (ICLs) in the Golisano Building (Building 70), and should also be on your schedule.
Although it is possible to hand in work for some of the labs without actually attending the laboratory class, you are always expected to be there. Severe grade penalties will result from your not attending lab classes.
The labs are equipped with Sun workstations, which you will use for both lab exercises and programming projects. While some ICLs may be unavailable outside of your scheduled lab period, you can use the workstations in the Computer Science Lab (CSL) any time this facility is open. The CSL is located in the Golisano Building, Room 3550. The lab hours are posted outside each of the labs.
There are ten scheduled laboratory sessions, one per week. Labs start the first week of the quarter. It is vital that you read each lab writeup (on the web) before coming to lab, and do all the indicated pre-lab activities, so you will be ready to go when lab begins.
You will have nearly a week to complete each lab. Labs are due at the end of the day two days prior to your next scheduled lab session (e.g. students who have their lab on Thursday, must submit their work before the end of the following Tuesday). You will receive your grade via electronic mail, typically within a week after the due date. Depending on when finals start, you may have less than the usual amount of time to complete the last lab of the quarter; we prefer to keep exam week free of other activities so you can concentrate on your final exams.
Some of your work will be tested during the submission process. You may be given some test data to help you in testing your program(s); we may use some or all of this data, or other data, when we test your work. You will be shown the results of none, some, or all of the tests performed. While submissions are still being accepted, you may revise your work and submit as many times as you want, without penalty.
Your lab grade is computed in the following manner:
As in Computer Science 2, there are programming projects in this course. They are larger problems for you to solve outside of lab or lecture time. There will be two projects for this course. For each project you will have approximately four weeks in which to complete the work; there may be a series of mini-deadlines to meet during that period. There will be one or more submission targets to match these deadlines; the project handout will specify the details. The project handout will also clearly indicate project due dates, and whether projects may be submitted late, with substantial penalty. The projects are coordinated and graded by your lecture instructor.
Projects take longer to do than laboratory assignments. They require longer term scheduling and technical planning. Do not wait until the last minute to begin projects or to begin submitting project solutions! An all too common scenario is that a student will finish the code "in the nick of time" but not be able to submit on time because many other students are in the exact same situation, so the systems are incredibly sluggish.
There will be two exams given during the quarter; see the course calendar for specific dates. Each exam will be fifty minutes long. Both exams are weighted equally with each other.
You are expected to take exams during the scheduled period; in general, we will not give make-up exams. However, we realize that some situations might arise that would prevent you from taking an exam: severe illness, accidents, etc. Should this occur, you must inform your lecture instructor prior to the exam; you can either call him/her or leave a message with the staff in the Computer Science Department office (70-3005, telephone 475-2995). Once you return, we will make specific arrangements regarding the missed exam.
Please note that oversleeping, cars that don't start, and other excuses of this ilk are not generally valid. It is your responsibility to get to class on time for exams. If you miss an exam and did not make prior arrangements for a makeup, you will receive a zero for it.
A common final exam will be given to all sections at the same time during the regularly scheduled final exam period. The date of the final will be announced as soon as we get the information, typically in the third or fourth week of the quarter. You must take the final exam at the time scheduled for your section; finals are not given early, nor will there be any makeup exam. The final will be comprehensive and will cover material from the entire course, including lecture, lab and assigned readings in the text books.
RIT recently announced new policies regarding final examinations. Of direct relevance here are two cases: (1) a conflict in which a student is scheduled for two final exams at the same time and (2) a situation in which a student is scheduled for three or more final exams on the same day. In case (1), there are several rules which determine which final exam takes precedence. In case (2), a student has the right (if they wish) not to take three or more final exams in one day. In both cases, if a student desires an adjustment of their final exam schedule, they must submit a written request for rescheduling, by the last day of the sixth week of classes, to the head of their home department, with a copy of the request given to the instructor being asked to provide the rescheduled final exam. We highly recommend that students first discuss their situation with all instructors involved.
It is a shame that this must be stated at all, but there are always a few students who do not abide by the rules of proper academic conduct. For the record:
The rules regarding helping each other on projects may be different from the ones specified here for labs. The rules will be stated in the handout for each project.
Those who behave in a dishonest or unethical manner in computer science courses, or in their dealings with the Computer Science Department, are subject to disciplinary action. In particular, dishonest or unethical behavior in the execution of assigned work in a computer science course will be treated as follows:
Furthermore, the following action will be taken for each person involved in the incident, whether currently enrolled in the course or not:
For more details refer to the DCS Policy on Academic Integrity. For most of you, such warnings are unnecessary. We have to mention this because otherwise some students would say, ``but you never said I couldn't just copy Johnny's work and turn it in as my own.''
The weekly schedule is available on the web. It reflects our best estimate of the timing of the topics covered in this course. Any changes to this schedule will be announced in advance by your lecture or lab instructor, or via e-mail.
Many of the course topics are not addressed directly by any of the text books. You can expect numerous class handouts on materials not covered in the texts. Detailed reading assignments are shown in the weekly schedule.
We cannot stress strongly enough that you are expected to have read assigned portions of the texts before class, as some of the material will not be covered in class unless questions arise. You are responsible for everything in the assigned readings whether covered in class or not, as well as lecture material whether covered in the readings or not. You may also have assigned readings to do before a lab session. Pertinent questions are always welcome.
There are many people on campus who are both able and willing to help you when you have trouble understanding something. Resources include: the tutoring center, your lecture instructor, your lab instructor, student lab instructors, the teaching assistants and the lab assistants. assistants and the lab assistants.
The Computer Science Department now offers a Tutoring Center for this and other introductory Computer Science courses. Student lab instructors (SLIs) as well as teaching assistants (TAs) will be in the Tutoring Center at scheduled times to help students with labs as well as more general programming questions. The tutoring schedule will be available shortly after the quarter starts from the course homepage.
From time to time, instructors or others offer extra help sessions. These are typically announced in lecture.
Both your lecture and lab instructors have offices in the same building as the computer labs. They have regularly scheduled office hours, which are times when they are committed to being available to students for any questions or problems that they may have. No matter how busy someone appears to be, their office hours are there for you and you are welcome. Most faculty are also available by prior appointment if you can't come during an office hour. We ask that you be on time for your appointments and you notify the person if you can't come as planned.
There are teaching assistants (TAs) assigned to the first year courses. Information about TAs will be available from the course homepage. They will help us with some of the laboratory sessions and will be available, either in the tutoring center or their office, during scheduled office hours.
They can help you with programming language problems, UNIX ® problems, and program debugging.
NOTE: While the teaching assistants are there to help you, they will NOT write your programs for you.
Student lab instructors (SLIs) are paired with lab instructors and have responsibility for one or more lab sections. In addition, SLIs will have scheduled hours in the Tutoring Center.
A lab assistant is on duty whenever the CSL is open. A lab assistant monitors a lab or labs, retrieves listings printed on the high speed print ers, and provides assistance for simple UNIX ® problems, mechanical problems with workstations, and simple programming language problems. For help with detailed problems related to labs and projects, see someone in the tutoring center instead.
Student conduct will be evaluated in accordance with the Policy on Academic Dishonesty and Code of Conduct for Computer Use found in RIT's Educational Policies and Procedures Manual. You should also have two related documents, the Code of Conduct for the Use of Department of Computer Science Facilities and the Policy on the Use of Computer Games on Department of Computer Science Facilities, which are refinements of the general Institute policies.
RIT policy allows you to withdraw from a course with a grade of W on or before the Friday of the eighth week in the quarter. After this date, your instructor cannot give you a W, but must assign you a grade based on your work.
This course has been designed so that you can complete all the work in one quarter. Thus incomplete grades will be given only in the most exceptional circumstances, and then only by prior arrangement with your lecture instructor. Your lecture instructor has the final say in this matter.
Every effort has been made to provide accurate information in this document. We reserve the right, however, to make changes to any facet of the course should circumstances warrant it. Any such changes will be announced in both lecture and lab.