CSCI 151 - Data Structures and Object-Oriented Development
Spring 2015
Course Overview:
Building on the skills acquired in CSCI 150, this course introduces data structures such as lists, stacks, queues, trees, and graphs, in the context of object-oriented software design. We will program using 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
- Trees
- Graphs
- Implement and analyze different sorting algorithms
- Develop and use regular expressions for string matching
- State and apply a mathematical definition of algorithmic efficiency
- Articulate the difference between static and dynamic type systems
- 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 classes to implement abstract data types
- Use interfaces and inheritance to implement subtype polymorphism
- Use generics to implement parametric polymorphism
- Use and understand recursion as an implementation technique
- Use the Java Stream library and higher-order functions
- Use the Java concurrency libraries when implementing threads
- Employ automated unit testing to verify and document software functionality
Instructor: Dr. Gabriel Ferrer
M.C. Reynolds 312
http://ozark.hendrix.edu/~ferrer/
Office Hours:
MWF: 2:00-2:30 pm
TR: 1:30-2:30 pm
Feel free to make an appointment (http://drferrer.youcanbook.me) outside these times, or to stop by whenever
my door is open.
Class Web Page:
http://ozark.hendrix.edu/~ferrer/courses/151/
Lecture Time:
C6 (1:10-2:00 pm MWF; 12:10-1:00 pm Tuesday)
Final Exam Period:
Friday, May 8, 2015, 2:00-5:00 pm
Laptops: This class is BYOL. Bring a laptop computer to class with you every day, unless there is a test. We will do programming exercises most class periods. Speak with the instructor if this presents a problem.
Grading Criteria:
Labs: 25%
Projects: 35%
Quizzes: 5%
Exams: 30%
Class participation: 5%
Each assignment 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 +4, and a "-" is worth -4. A grade of "A+" (100) 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.
Labs: Much of your experience with programming in this course
will take place through lab exercises. Each lab is designed to introduce
or reinforce a computing concept. You may collaborate with one other
student on each lab exercise. Each lab will be assigned in class with time
available to work through the materials. One or two lab exercises will be
assigned in a typical week.
Projects: Five or six substantial free-form projects will be
assigned over the course of the semester. Each project is an opportunity to
demonstrate mastery of one or more computing topics. Each student will
present their final project to the class during the final exam period.
Each project will be completed individually.
Quizzes: Several short quizzes (administered via Moodle) will
be given throughout the semester.
Exams: Three in-class exams will be given over the course of
the term. Tentative dates for the exams are:
- Friday, February 13
- Friday, March 6
- Wednesday, April 29
Revisions: After assignments are graded, you are welcome to revise and resubmit your work. I will grade anew each submitted revision, and average the original and revised grades together to produce a new grade for that assignment. Revisions may be submitted anytime until the start of the final exam.
No late work will be accepted. Any work not submitted on time is a zero. However, you may submit a project after the deadline to qualify under the revision policy above. In effect, this means that late projects can earn up to half credit.
Illness and other excuses: If you are ill and miss any deadlines or tests, you must provide me with documentation of the illness from the school nurse or another health care professional as soon as possible. If you miss any homework or tests due to approved Hendrix activities, you must provide written documentation from the sponsor of the activity one week beforehand.
Accommodations: It is the policy of Hendrix College to accommodate students with disabilities, pursuant to federal and state law. Students should contact Julie Brown in the Office of Academic Success (505.2954; brownj@hendrix.edu) to begin the accommodation process. Any student seeking accommodation in relation to a recognized disability should inform the instructor at the beginning of the course.
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