Course Details
Software and Hardware
This class is BYOL. Bring a laptop computer to class with you every day,
unless there is a test. I have a small number of computers available for students who
are unable to do so. We will do programming exercises mostly every class period.
Overview
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
- 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
- Employ automated unit testing to verify and document software functionality
- Develop and use regular expressions for string matching
- Use the Java Stream library and higher-order functions
- Use the Java concurrency libraries when implementing threads
Quizzes and Participation
Sporadically throughout the semester, there will be short quizzes covering
material from the
previous class.
You are expected to attend class and actively participate in discussions every day
(answering questions, asking questions,
presenting material, etc.)
These quizzes, participation, and in class homework
will comprise 10% of your final grade.
Disabilities
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.
Academic Honor
Please refer to the
CSCI Academic Integrity Policy.
Extensions
Extensions and rescheduling for labs, projects, exams and quizzes are only given when
circumstances beyond your control (e.g. being sick, academic, choir or sports travel, etc)
prevent you from completing a project on time. You must notify me either by
email or phone of your circumstances well in advance of the due date.
Readings
In Class / Homework
Labs
Much of your experience with programming in this course will be through weekly labs,
which will comprise 25% of your final grade. Each lab will be assigned in lab with
time allotted to work through the materials, and will be due by Wednesday of the
next week at 1pm, before class starts.
All labs are weighted equally within the lab portion
of your final grade.
Lab attendance is required. Labs take place in
the Snoddy Computer Lab, in the Bailey Library.
As you go through the exterior door of the library,
turn immediately to your left and enter the Snoddy
Academic Resource Center, through this door:
Continue through the door at the far end of the hall
(just visible in the picture above) into the first
computer lab, and then enter the second lab at the
back.
You will be handing in most of your lab work
via Moodle.
Instructions to do so will be included in each lab.
On these labs, you may work with a partner on the lab assignments if you choose. Their name must be
listed on any code you hand in as joint work.
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.
Exams
There will be three in-class exams, each worth 10% of your final grade. They
will consist of short answer along with writing and debugging code. They are
tentatively scheduled for:
- Exam 1: February 19
- Exam 2: March 16
- Exam 3: April 27
Grading
Your final grade for this course will be based on the Labs, Projects, Quizzes, Exams and
Participation described above.
Grading Scale |
90-100 | A |
80-89 | B |
70-79 | C |
60-69 | D |
0-59 | F |
|
Weights |
Labs | 25% |
Projects | 35% |
Quizzes and Participation | 10% |
Exam 1 | 10% |
Exam 2 | 10% |
Exam 3 | 10% |
|
© Mark Goadrich, Hendrix College