
School of Engineering and Applied Science
Department of Computer Science
CSci 131 -- Algorithms and Data Structures I
Prof. Michael B. Feldman
Spring 2002 -- Frequently Asked Questions
latest update Jan. 13, 2002
http://www.seas.gwu.edu/~csci131/spring02/131s02faq.html
This page may be updated during the semester as more questions arise.
You should check this location frequently to see if the page has been updated
since your last visit.
What is this course about?
This course is about software construction, algorithms, and data structures.
The three main "threads" that are intertwined through the course are:
-
software construction, with emphasis on reusable generic software template
components
-
advanced data structures: advanced array structures, stacks & queues,
linked lists, graphs, and trees
-
algorithm performance prediction: "big O" notation
We trust our lives and our businesses to software. Software is important,
and we will be emphasizing the importance of good software design. I hope
this will be fun for you, and that you'll be proud of your accomplishments
here in writing software that doesn't crash.
The prerequisite is CSci 51 or a closely equivalent course. We use Ada
95 as the coding language here.
I didn't take 51 and I don't know any Ada. Am I going to be OK in this
course?
Probably, depending on the kind of equivalent course you took. If you had
a good course that covered 51-level material but used C or C++, Java, or
Pascal as the coding language, chances are you will do fine here, if your
mind is open to another programming language. If you choose a career in
software development, you'll be learning new languages and tools every
few years. You might as well start now!
Ada is derived from Pascal; many sudents have found it easier to learn
than C or C++. You can get "up to speed" in basic Ada syntax and style
by quickly reading the first 10 chapters of the book used in CSci 51.
If your only other course was (say) at high-school level in BASIC, you
are much better off taking 51 first. Speak to me if you have any
doubt. We've taught this course with Ada for many years, and seen many,
many students do quite well here even without an earlier course that used
Ada.
Why are we using Ada 95 in this course?
We, like about 150 other colleges and universities, are using Ada 95 in
this course because we are convinced it is absolutely the best choice for
a course of this type. We have used Ada in this course since 1985, and
Ada 95 since 1995, and it works!
Think of Ada as an "industrial-strength" Pascal. One of Ada's strong
points is that the compilers are very helpful. Once you've gotten a program
to compile, it is quite likely to run correctly.
Another strength is that Ada has excellent features for developing software
components. It is much newer than C and about the same age as C++.
Is this a "filter course" designed to weed out students?
Absolutely not! Our goal in this course is that every student should succeed
here, and we are here to help you do so.
Is this a difficult course?
It's not intended to be difficult. Any course, in any subject, is easier
for some students than for others.
Does this course have a heavy workload?
CSci 131 is not intended to be a very heavy course. On the other hand,
software development courses usually require somewhat more of your time
than liberal-arts "reading" courses. For every in-class hour in this course,
you should expect to spend 2-3 hours outside of class.
Do I have to go to lecture?
Lecture attendance and reading quizzes counts 10% of your grade. Some days
attendance is taken; other days it isn't. If you must miss a lecture, you
are still responsible for all work covered, so ask a friend to take notes
for you.
Do I have to go to lab?
Each week's lab session will require you to do a small assignment that
helps you learn that week's material. If you go to the lab and work productively
on the assignment, you get credit for that lab; if you don't, you don't.
Lab work counts 10% of your grade.
What if I miss a lecture or lab, and therefore don't get a copy of a handout?
Each handout will be distributed in class once. All handouts are
on the class web site, http://www.seas.gwu.edu/~csci131/spring02.
If you miss a handout -- or lose one -- just visit the web site and get
a copy there.
Do you give out lecture notes or post them on the web?
No, I don't. I don't read from prepared notes. I do use viewgraphs, but
I often change them at the last minute or write on them during lecture.
How is grading done?
Your semester grade will be calculated as follows:
-
Lecture and Reading Quizzes 10%
-
Laboratory Assignments 10%
-
Midterm Exam 20%
-
Final Exam 30%
-
Software Projects 30%
Unlike CSci 51, I do not eliminate your lowest project grade. All projects
count.
Do you grade "on a curve"?
I keep grade records strictly "by the numbers"; at the end of the semester,
I compute a final average for each student. I then assign a grade that
represents my experienced judgement as to how much you got out of the course.
I have no predetermined cutoff points for As, Bs, Cs, etc. If every student
does well, every student gets a high grade.
I do not normally give D grades. If you cannot get at least a C- in
this course, you are simply not prepared to go on to CSci 141 or other
courses that depend on this one. Therefore, in this course the grade below
C- is F; in that way, you are required to repeat the course in order to
proceed.
What about these software projects?
A project every two or three weeks, Each project will build on the work
done in previous projects, so it is in your interest to keep up with the
project work. There will be 5 or 6 projects. In this course I do not drop
the lowest grade!
Each project will be graded on a 0-20 point basis. An incomplete submission
is better than none; you will get credit where credit is due. I will accept
late projects, subject to a "late fee" of 4 points per week of lateness.
Each project is due at the start of the class on the due date; projects
submitted after the lecture has begun will be counted as one week late.
Can I work with a friend on the projects?
Projects must represent the results of your own work. We may do some projects
here with 2-person teams, but then the work must be that team's work, and
not others' work.
If you collaborate on the detailed design or coding, or copy a program
from an acquaintance, then submit the results as your own work, I will
charge you with plagiarism, and I will win.
Please read the handout on Plagiarism
and Collaboration, which spells out the rules for getting help from
others.
If you have any question about the rules, ASK Prof. Feldman or the
lab instructor. Do not take other students’ word for it! Do not rely on
the rules of other courses!
Also read the CS
Department Policy on Academic Integrity and the GW
Code of Academic Integrity.
Getting Your Questions Answered by E-mail
Compilation Errors: Don't waste your time sending messages that
won't get you a quick result!
-
Send a listing (.lss, .lsb) file. JUST a listing file.
-
NOT a source (.ads, .adb) file—we need the messages and line numbers!
-
NOT a copy/pasted snippet—JUST the file. We need to see the whole context
for the message.
-
NOT a second note saying "I just sent my listing file". We know that. When
we get a listing file with messages, we know what to do with it.
-
NOT an attachment! Send the file from hobbes as you sent the survey in
Project 0. If you forgot how, read Project 0 again.
Execution errors: VERY hard to do by e-mail; that is what office
hours are for! If you don't leave it till the last minute, there are plenty
of office hours to visit Feldman or lab instructors.
I have my own computer. Can I use it in this course?
Yes, but the main location of all the programs you will need is on the
SEASCF server called "hobbes". It is best to do your work on hobbes; to
do so you will need a terminal program that supports the Secure Shell 2
protocol (SSH2). You can download a free one. See http://www.seas.gwu.edu/~seascf/access/remote.shtml
for details.
Once you have a good sense of how the projects and software development
tools work, you can install them on your own computer. Download GNAT from
ftp://cs.nyu.edu/pub/gnat, or install
it from the CD in the CSci 51 textbook. Once your project is done, you
will still need to test it on hobbes.
Tell me about examinations, please.
There will be a one-hour midterm and a two-hour final exam, both strictly
timed. These will be open-book, open-notes exams. If you are coming to
class regularly, and keeping up with the reading and the projects, you
should not need to "cram" for the exams. Exams will require a mixture of
reading and interpreting short program segments, writing short program
segments, and short "essay" questions.
What about the reading quizzes?
Reading before lecture is essential to this course. Even if you do not
understand the information the first time around, the second or third time
it should become more clear.
To encourage you to keep up with the reading, there will be a number
of short, unannounced reading quizzes. Expect one every Monday. Each quiz
will cover basic information from that week’s reading assignment, so be
sure to read that chapter before coming to class Monday. Each quiz will
be very short, and graded as pass/fail (1 or 0). The quizzes and lecture
attendance will count as 10% of your overall grade.
What should I do to get a high grade in 131?
There is no magic formula for a high grade, but here are some ways
to ensure you will probably get a low grade:
-
Skip class repeatedly. Lectures do not repeat the book, and material
covered in class is covered on the exams. Further, the reading quizzes
count 10% of your grade.
-
Skip lab repeatedly. This will hurt — lab is 10% of your grade!
-
Start on the projects late. In this way, you cheat yourself out
of asking questions in class. I will discuss project details and trouble
spots in class, but only in response to your questions.
-
Turn in late projects repeatedly. Your "lateness fee" is 4/20 points
per week late. Each project is about 5-6% of your grade, so each "fee"
is about 1%. One or two don't hurt much, but they add up fast!
-
Ignore the reading until it's time to cram for the exam. This course
is "all connected" — if you ignore the reading you are clueless in class
and on the projects. You cannot possibly get a good exam grade by cramming
the book. Also remember the reading quizzes!
How do I withdraw from the course?
Under University and SEAS regulations, here are the rules for withdrawing
from courses:
-
During the first four weeks: you can withdraw using a simple Drop/Add
(Registration Transaction) form. The course disappears from your transcript.
-
After four weeks but before Preregistration begins: you can withdraw
using a simple Drop/Add but the grade W appears on your transcript. This
has no effect on your grade-point average.
-
After Preregistration begins but before the end of classes: this
is considered a "late withdrawal." You must complete a SEAS Late Withdrawal
form, which requires the signatures of the instructor, your advisor, the
EECS Department Chair, and the SEAS Associate Dean. I will always
sign a late withdrawal form, as long as classes have not ended for the
semester. I will not sign a withdrawal form after the last class!
Do you give Incompletes?
Under University regulations, and my own policies, here are the rules for
Incomplete grades:
-
A grade of I (Incomplete) may be assigned only when the student
has really special circumstances such that (s)he cannot finish the
work of the course. I follow the University regulations, and do not give
Incompletes unless the situation is truly unusual. Do not ask for
an Incomplete just to gain more time to finish projects or raise a low
grade. I will almost always say no.
An Incomplete grade is undesirable. Under GW rules, you are required
to remove the I by completing the work of the course. Taking the course
a second time does not (NOT!) remove the original I. Under SEAS
rules, an Incomplete not removed within one year becomes an F.