CSCI 151 - Foundations of Computer Science II
Spring 2010
Course Overview:
This course continues the development of programming skills from
CSCI 150. It also introduces basic skills in mathematical analysis
of algorithms and data structures. We will continue to program in the
Java language.
At the end of the course, you will be expected to be able to:
- Write and thoroughly test a medium-sized program (400 lines minimum)
- Implement and analyze the following data structures:
- Linked lists
- Stacks
- Queues
- Priority Queues
- Hash tables
- Binary trees
- Implement and analyze different sorting algorithms
- Develop and use regular expressions for string matching
- State and apply a mathematical definition of algorithmic efficiency
- Analyze the running time of an algorithm or data structure operation
using "big-O" notation
- Understand and apply common complexity categories to select the right
data structure and algorithm for a given task
- Use the object-oriented mechanisms of class and inheritance to implement
abstract data types
- Write proper comments
- Use and understand recursion as an implementation technique
- Develop a test plan
- Use the Java concurrency libraries when implementing threads
Instructor: Dr. Gabriel Ferrer
M.C. Reynolds 312
http://ozark.hendrix.edu/~ferrer/
Office Hours:
MF: 1:30-3:30 pm
W: 1:30-2:30 pm
R: 9:30-11:00 am, 1:10-3:00 pm
Feel free to make an appointment outside these times, or to stop by whenever
my door is open.
Class Web Page:
http://ozark.hendrix.edu/~ferrer/courses/151/
Lecture Time:
C3 (10:10-11:00 am, Monday/Wednesday/Friday; 12:10-1:00 pm Thursday)
Final Exam Period:
Friday, May 7, 2010, 8:30-11:30 am
Recommended Textbook:
Just Java, 6th edition, by Peter van der Linden, Sun Microsystems, 2004.
Any other Java reference will be fine as well.
Grading Criteria:
Homework assignments, including programming projects: 50%
Quizzes: 20%
Final Exam: 25%
Class participation: 5%
Each assignment and presentation will be assigned a letter grade. Each
letter grade has associated with it a percentage grade as follows:
Letter grade | Percentage |
A | 95 |
B | 85 |
C | 75 |
D | 65 |
F | 50 |
Missing grades will be scored zero. Any grade can have a "+" or "-" attached
to it. A "+" is worth +5, and a "-" is worth -4. A grade of "A+" will only
be assigned to work that in some way impresses me above and beyond the
requirements for the assignment.
For each category above, the total points earned will be divided
by the total points possible to yield a percentage. These percentages will
be weighted as given above. A final average of at least 90 earns an A;
80 earns a B; 70 earns a C; 60 earns a D; below 60 is failing.
Extra Credit:
From time to time, the instructor may award extra credit. Each unit of extra
credit results in the addition of one-tenth of a point to the final semester
average. For example, a student with a semester average of 81 with 5 units of
extra credit would have a final semester average of 81.5. A student with a
semester average of 89 and 11 units of extra credit would have a final semester
average of 90.1, thus earning an A rather than a B.
Late Homework Policy:
All homework assignments will include a time of day at which they are due.
Late assignments lose one letter grade for every 24 hour period
that they are submitted after the deadline. Weekends are not included in this
computation. So if an assignment is due at 5 pm Friday and it is submitted
before 5 pm Monday, it will be one day late.
There will be no exceptions to this policy, although emergencies
will be handled on a case-by-case basis.
Computer Lab Facility:
You will receive an account that enables you to use the Linux machines
in MCReynolds 316. Be sure to review the lab policy page:
http://ozark.hendrix.edu/linux/policies.html