According to the Computer Science course descriptions: COMS W3134x or y Data Structures In Java 3 pts. Prerequisites: COMS W1004 or knowledge of Java. Not intended for computer science majors. Data types and structures: arrays, stacks, singly and doubly linked lists, queues, trees, sets, and graphs. Programming techniques for processing such structures: sorting and searching, hashing, garbage collection. Storage management. Rudiments of the analysis of algorithms. Note: Due to significant overlap, students may receive credit for only one of the following four courses: COMS W3133, W3134, W3137, and W3139.
As a rough approximation, we will cover most of the same topics as CS3137, but we'll go into less detail in some aspects, such as algorithm analysis and proofs, instead spending more time on the concepts and implementations of data structures.
Classroom: 833 Mudd
Class time: TR 11:00am-12:15pm
Click here
for the registrar's page, including call number.
Janak J Parekh
Email:
Office: 608 CEPSR (the building immediately west of Mudd)
Office hours: TR 12:15pm-1:15pm (i.e., immediately after class, in
the classroom, moving to my office as necessary), or by appointment
Akash Garg Email: Office: TA Room Office hours: Mon., 12n-1pm and Weds., 12n-1pm |
Rachel Goldman Email: Office: TA Room Office hours: Weds., 4pm-6pm |
Matthew Waymost Email: Office: TA Room Office hours: Mon., 11am-12n and Tues., 3pm-4pm |
Lafore, Robert. Data Structures & Algorithms in Java,
Second Edition. SAMS, December 2002. ISBN: 0-672-32453-9. The book can be purchased from Morningside Bookshop (formerly known as Papyrus Bookstore), located on the southwest corner of 114th and Broadway. Note that you need to go down the stairs on 114th to the computer section. The regular Columbia University bookstore does not have the book, so don't go looking there. Alternatively, here's Amazon's link to the book. (If you buy the book from anywhere else, ensure it's the second edition; the book has changed substantially from the first edition. Also, note that we are not using the same book as CS3137.) Finally, here's the publisher's link to the book. You can get more information as well as download the sample code and applets from the book here. |
There are three major components to a grade in this course: homeworks, midterm, and the final.
In other words, all three components are extremely important, but homeworks are especially significant. Class participation is also strongly urged. While there is no numerical grade attached to it, as neither participation nor attendance is strictly required, it's in your interest to make an acquaintance with me, especially if you're on the "borderline" between grades at the end of the semester. I may also give some bonus point opportunities on homeworks; these are added up after the curve at the end of the semester.
I'm a strong believer in the "reasonable person principle" as pioneered by Professor J.L. Gross. Among other things, a reasonable person catches up with material should they miss class, explains answers on homeworks or exams, and does not cheat (more on this later).
Homeworks will generally be divided into two parts: written theory questions and programming questions. You're generally allotted two weeks for each homework; make sure to start early so you can ask questions (or, make sure you have a lot of coffee and crossed fingers if you start the night before it's due). I generally make homeworks due by classtime, so you don't have an incentive to skip out on the next lecture.
Consequently, there will be two means of submission: hardcopy and electronic; the first will be required for the written problems, and the latter for the programming exercises. A link to the instructions will be posted here well before the first homework is due.
You are given 3 "late days" that can be used towards homework submissions during the semester. A late day is defined as exactly 24 hours, so if a homework is due at 11:00:00am on Tuesday, you could submit the homework by 11:00:00am on that Wednesday by using up one of your late days.
As an example, you can submit homework 1 two days late and homework 4 one day late -- but all of the remaining homeworks must be on time. Beyond the late days, no late homeworks will be accepted; if you're in such a situation, submit what you have instead of getting a zero. (Please don't come to my office or email me with excuses -- short of a medical, family, or national emergency, I'm not interested in them!)
There are two important limits on your use of the late days:
One word: don't. All homeworks and exams in this course are intended to be done by yourself, and with the help of the textbook, teaching assistants, the instructor, and the webboard. You're allowed to discuss problems with classmates, but only in general terms, and you must specifically avoid discussing any solutions.
Moreover, you'd be amazed how easy it is to detect plagiarism or cheating in both written and programming assignments. Cheaters don't spend tremendous amounts of time masking their copy, because that defeats the purpose and it would be simpler to do the homework themselves. Invariably, therefore, they get caught. An infraction is a zero on the assignment or exam and a referral to your academic dean. See this page for more details.
You must also resist the urge to copy code from the web. Obviously, there are many data structures classes out there, and while I put every effort into making my homeworks reasonably unique, there are likely to be similar approaches elsewhere. While I obviously can't forbid you to look at other slides or text material, any evidence of plagiarism from other sources will merit similar consequences.
I love feedback! Feel free to come to me during office hours, or make an appointment to discuss anything you like or don't like about the course. I can't always promise that I'll resolve your issues (such as randomly dropping a homework grade), but I do promise I won't take it out on you. I'm here to help you learn and get the most out of the class.