Instructor: | |
---|---|
Office: | |
Email: | * |
Phone: | No need to call me |
Course Webpage: | |
Office Hours: |
*Do not email me about general knowledge questions, questions that are better asked (and answered) on the discussion board. Email is appropriate if, e.g., you miss class 'cause you're in the hospital, e.g.
cs260-ta@cs.drexel.edu will be sent to all of the
TAs. Not any more it won't; college IT stopped creating mailing aliases for us.
Data structures form the basics for the programmer's toolbox. You will become familiar with the basic common data structures, and learn to modify them or create your own. Further, the notion of data abstraction is important from several aspects. You will start down the road of separating interface from implementation, to viewing a problem simply in terms of functional requirements and dependencies (or lack of). On the flip side, we will explore various issues involved in implementing a given interface.
After this semester you will:
6 credits of some higher-level language, and CS265 (or equivalents).
EntryMath.pdf contains some examples of skills we assume before coming to this course. Note, mastery of these skills does not guarantee success in this course, but bafflement will certainly annoy us.
1 midterm during week 6 (30%); weekly homeworks (written and implementation) (35% total), and a final exam (35%).
Last date to withdraw with a "W" grade:
I wouldn't rely on there being any.
A scaling will be applied to the final grade, bringing the mean up to a mid-high C. The curve will not be normalised; it is typically bimodal, and if so, will remain that way.
There will be weekly homeworks, each in 2 parts:
Due dates are discussed on the lecture page.
Do not email work to me or the TAs w/out prior consent. It will be deleted, unread, with prejudice.
Written work will be submitted electronically, as a PDF, via GradeScope
The implementation will be submitted via submit on tux.
While the focus of the course is understanding the theory of algorithms and the data structures that support them, implementation is an important part of the course. Details of implementation, however, are not the course focus, so all assignments will be done using Python. (It really will make your life simpler, although that may not be obvious in the first couple weeks.)
Note that Python has libraries that implement many of the algorithms we will discuss. Don't use them. If in doubt, ask. Remember, the purpose of the implementation assignments is to gain a deeper understanding of the algorithms and data structures we study, not to gain a deeper understanding of Python per se.
All programs will be graded on the department Linux machines. It's interpreted, but you should check that the files run on the dept. Linux machines before submitting. The submit program should help with this.
You all have an account on the CS servers (tux.cs.drexel.edu). Click here for a quick tour, logging in, creating a directory, creating, compiling, and running a C++ program. Also on my front page are some links for basic Unix commands, and a quick reference for using the vi editor.
Use the discussion board on Blackboard to ask questions about the course, or material studied in this course. Do not email instructors and TAs questions that all students might benefit from.
Only email instructors or TAs about individual administrative matters.
Some guidelines for posting to the discussion board:
By the laws of most states, you've reached the age of consent. If you don't want to come to class, I won't cramp your style. But you are responsible for getting notes and in-class announcements from someone other than me.
Note, you are expected to attend class. Missing classes may negatively impact your performance, and financial aid.
In general, you are responsible for anything I say, write on the board, and all assigned reading, unless I specify otherwise.
A simple observation: while there have been exceptions, generally (more than 95% of the time) students who don't come to class regularly don't do as well on exams, and often receive poor grades, often lower than that student, in my estimation at least, could've done.
Again, your grade is not affected directly by how often you raise your hand. However, I strongly encourage you to do so, either to respond to my questions, or to ask your own.
Do not think your question is not worthy. That would be my call. I may, at times, defer your question until I can give it better attention. And while we all know platitudes about best intentions, I try never to insult anybody. If I do, blame my ignorance, at least until you tell me about it and hear my side.
In short, I need feedback, I need to know if you're bored or you're lost (those 2 expressions look oddly similar), and the class (and hence, the learning process) goes much better, and is more fun (and doesn't seem to take as long), if the classroom interaction isn't clearly one-sided, but more energetic. I will occasionally make mistakes on the board (always intentional, of course); I expect you to catch them out and call me on them.