This course builds on skills acquired in CSCI 150, placing emphasis on object-oriented software design and data abstraction. Students are introduced to data structures (lists, stacks, queues, trees, heaps, hash tables, graphs) and programming techniques such as recursion and sorting algorithms. Other topics include analysis of algorithm complexity, automated unit testing, and inheritance. Programming assignments focus on the design and implementation of algorithms and data structures using the Java language.
Upon completing this course, our goal is for you to be able to:
- Build substantial computer programs with graphical user interfaces to effectively solve realistic problems.
- Understand and implement fundamental data structures to manage complexity.
- Explain the compromises necessary to develop efficient programs.
- Use and justify appropriate programming algorithms for specific tasks.
- Decouple problem specification from program implementation through abstraction.
- Employ test-driven and empirical methods to understand the behavior of a program.
- Discuss the ways programming languages employ distinct features to solve problems.
- Develop an aptitude and skills for independent learning.
Peer Tutoring
Sunday |
Monday |
Tuesday |
Wednesday |
Thursday |
6-8 PM |
5-7 PM |
7-9 PM |
7-9 PM |
6-8 PM |
Katherine Reid |
Leigh Johnston |
Ted Bjurlin |
Joseph Washum |
Jauss Favorite |
Date |
Day |
Topic |
Assigned |
Due |
8/28 |
Wed |
Introduction to Java |
Survey |
|
8/30 |
Fri |
Introduction to Java |
|
Survey |
|
|
|
|
|
9/2 |
Mon |
Labor Day No Class |
|
|
9/4 |
Wed |
Arrays, Memory, Mutation |
|
|
9/6 |
Fri |
Designing Classes |
FA1: Eating Candy |
|
|
|
|
|
|
9/9 |
Mon |
Interfaces |
|
|
9/11 |
Wed |
User Input, 2D Arrays |
|
|
9/13 |
Fri |
Project 1 |
Project 1 FA2: Garden |
FA1 |
|
|
|
|
|
9/16 |
Mon |
Enums |
|
|
9/18 |
Wed |
Stack Abstraction Array Implementation |
|
|
9/20 |
Fri |
Linked List Implementation |
FA3: ArrayStack Memory |
FA2 |
|
|
|
|
|
9/23 |
Mon |
Generics |
|
|
9/25 |
Wed |
Queue Abstraction Linked List Implementation |
|
|
9/27 |
Fri |
Array Implementation |
FA4: ListNode Memory |
FA3 |
|
|
|
|
|
9/30 |
Mon |
ArrayList |
|
Project 1 |
10/2 |
Wed |
JavaFX GUI |
|
|
10/4 |
Fri |
JavaFX GUI |
FA5: ArrayQueue Memory |
FA4 |
|
|
|
|
|
10/7 |
Mon |
Priority Queue Abstraction Insertion Sort Implementation |
|
|
10/9 |
Wed |
Heap Abstraction |
Project 2 |
|
10/11 |
Fri |
Array Implementation of Heaps |
FA6: Heaps |
FA5 |
|
|
|
|
|
10/14 |
Mon |
Selection Sort Heapsort |
|
|
10/16 |
Wed |
Bubble Sort Merge Sort |
FA7: Sorting |
FA6 |
10/18 |
Fri |
Fall Break No Class |
|
|
|
|
|
|
|
10/21 |
Mon |
Quicksort |
|
|
10/23 |
Wed |
Big O |
|
|
10/25 |
Fri |
Big Omega, Big Theta |
|
FA7 |
|
|
|
|
|
10/28 |
Mon |
Asymptotic Analysis |
FA8: Big O |
Project 2 |
10/30 |
Wed |
Map and Set Interfaces Binary Search Tree Implementation |
Project 3 |
|
11/1 |
Fri |
Removal from Binary Search Trees |
|
FA8 |
|
|
|
|
|
11/4 |
Mon |
Tree Traversals Tree Balancing Tree Rotations |
FA9: Trees |
|
11/6 |
Wed |
Balanced Trees |
|
|
11/8 |
Fri |
Hash Tables Separate Chaining Implementation |
|
FA9 |
|
|
|
|
|
11/11 |
Mon |
Hash Tables Open Addressing Implementation |
FA10: Hash Tables |
Project 3 |
11/13 |
Wed |
Hash Tables Cuckoo Implementation |
|
|
11/15 |
Fri |
Tries |
|
FA10 |
|
|
|
|
|
11/18 |
Mon |
Tries |
|
|
11/20 |
Wed |
Designing the Final Project |
Project 4 |
|
11/22 |
Fri |
Building Large Programs |
|
|
|
|
|
|
|
11/25 |
Mon |
Building Large Programs |
|
Project 4 Design Document |
11/27 |
Wed |
Thanksgiving Break No Class |
|
|
11/29 |
Fri |
Thanksgiving Break No Class |
|
|
12/2 |
Mon |
Building Large Programs |
12/4 |
Wed |
Building Large Programs |
12/6 |
Fri |
Retrospective |
|
|
|
12/12 |
Thu 8:30-11:30 am |
Project 4 Presentations |
Coursework
Each formative assessment involves doing some preparatory work followed by visiting the instructor’s office hours
for a demonstration of understanding. There are three types of formative assessments:
- Java Programming: For these assessments, you will begin by creating a Java program as directed below.
During your office hours visit, you will demonstrate it to the instructor, followed by modifying the program
as the instructor directs.
- Problem Solving: For these assessments, you will study a problem prior to your office hours visit. During
the visit, you will demonstrate and explain your solution to the problem. If it is not correct, you and the
instructor will discuss the correct solution. Following this conversation, you will be given a closely related
problem to solve. If you solve it correctly, you will receive full credit.
- Data Structure Demonstration: For these assessments, you will demonstrate the operation of a data structure
using the CS2 Mulch Manipulatives. To prepare for your demonstration,
review Java programs you write in lab in which you built the data structure. Also review the appropriate
demonstration
videos and practice using
Tabletopia prior to your office hours visit.
Credit:
- A successful demonstration earns two credits.
- A sincere attempt at a demonstration that is lacking in some manner earns one credit.
- A student is welcome to schedule a follow-up meeting to make an additional attempt
to earn full credit.
- Attempting the demonstration by the deadline earns one additional credit.
- All demonstrations must be completed by Tuesday, December 17 at 5 pm.
Each formative assessment will be assigned on a Friday. To receive credit for an on-time
demonstration, the office hours visit will need to occur by the following Friday at 5 pm.
Each lab consists of a series of milestones. At the start of each lab, you will receive a sheet of paper listing the milestones for that lab. As you achieve each milestone, you will demonstrate to the instructor or TA that you have met the milestone, and they will record this achievement on your checklist. When you complete all of the lab milestones, you will submit the milestone checklist.
If you complete the lab during the lab period, hand your checklist to your lab instructor before you leave the lab. If you require additional time beyond the lab period to complete the lab, either the instructor or the lab TA can check off the remaining milestones during office hours. You can then submit the completed checklist to the instructor at the start of the next lab.
You will work with a partner on each lab assignment. Each partner will have their own milestone checklist. If they do not complete the milestones during the lab period, they should find time outside of lab to work together to complete them. If they are unable to do so, only the instructor is authorized to record milestones for students working alone.
Important: Lab attendance is required. We will be
stationed in the Snoddy Computer Lab in the library for our lab times.
Credit:
- Submitting the completed lab check-off sheet by the start of the next lab earns two credits.
- Submitting the completed lab check-off sheet at a later date earns one credit.
- All check-off sheets must be submitted by Tuesday, December 17 at 5 pm.
You will have three skills projects in this course, one about every four weeks. These projects will cover concepts we have discussed in class and in labs, and will be due approximately two weeks after they are assigned.
Warning: You must work individually on the projects. You may discuss concepts and ideas with your classmates, but the code or work you turn in must be your own. Use of any resources (TA, StackOverflow, ChatGPT, etc) must be cited, and an overreliance on those resources can be counterproductive to developing your own ability to make progress in this and other courses.
Each project will be assessed as Level 1 Complete or Level 2 Complete, with criteria specified individually
for each project. You will be graded not only on correctness, but also technique, documentation and evaluation of
your solution.
Note that the final project must be submitted on-time to earn credit - no final projects
will be accepted late. Projects earn credits as follows:
Project |
Level 1 Complete |
Level 2 Complete |
On-time Bonus |
Maximum Credit |
1 |
2 |
4 |
1 |
5 |
2 |
2 |
4 |
1 |
5 |
3 |
2 |
4 |
1 |
5 |
4 |
6 |
12 |
None |
12 |
If a project receives less than Level 2 Complete, a student may submit a revised version of the project after an
office hours meeting with the instructor to discuss how the project should be improved. All project revisions must
be submitted by Tuesday, December 17 at 5 pm.
Attending class and being an active participant in the class community
is one of the most important contributors to your learning at Hendrix.
Attendance is especially important in this class since you will often engage in group learning activities. Active participation is expected in order to achieve higher grade levels in the course.
If you know that you will be absent, please email me so that we can find accomodations. If there is an emergency, please get in touch with me as soon as is possible once the emergency is resolved. I trust you to be honest with me about your reasons for the absence (I do not need details), and honest with yourself about if you truly need to be absent. If you do not communicate with me about your absence, it will be unexcused.
Final course grades are earned based on cumulative assignment outcomes. For each
category of assessment, there are three levels of mastery: Basic, Intermediate, and Advanced.
From the 10 formative assessments, 30 total credits are available:
- Basic: Earn 16 formative assessment credits
- Intermediate: Earn 22 formative assessment credits
- Advanced: Earn 28 formative assessment credits
Labs
From the 12 labs, 24 total credits are available:
- Basic: Earn 15 lab credits, maximum of two unexcused absences
- Intermediate: Earn 19 lab credits, maximum of one unexcused absence
- Advanced: Earn 23 lab credits, no unexcused absences
Remember: For an absence to be excused, the student must discuss the
circumstances with the lab instructor.
Projects
From the four projects, 27 total credits are available:
- Basic: Earn 12 project credits
- Intermediate: Earn 19 project credits
- Advanced: Earn 26 project credits
Final Course Grade
- To earn an A in the course, a student will:
- Complete the course survey.
- Achieve Advanced in all three categories
- To earn a B in the course, a student will:
- Complete the course survey.
- Achieve at least Intermediate in all three categories.
- Achieve Advanced in at least one category.
- To earn a C in the course, a student will:
- Complete the course survey
- Achieve at least Basic in all three categories.
- Achieve one of:
- Advanced in at least one category.
- Intermediate in at least two categories.
- To earn a D in the course, a student will:
- Achieve at least Basic in all three categories.
Commitments
It is my ultimate goal for this course, and my teaching, to
develop your academic skills, advance your learning
of computer science concepts, and support the liberal arts in general. To do so
will require commitments from myself and from you toward meeting this goal.
Active Participation
I will be prepared and on time for class each day, ready to use class time
to help you understand the course material. I will respectfully listen to,
understand, and answer questions asked in class.
You are expected to attend class and actively participate in discussions every day,
answering questions, asking questions, presenting material, etc. Your
participation will be respectful of your classmates, both of their
opinions and of their current point in their educational journey, as we
each approach the material with different backgrounds and contexts.
Constructive Feedback
I will keep office hours and be available for outside appointments, and respond
to emails within one business day (not including weekends).
I will provide feedback on group presentations within one day. For exams, projects,
and homeworks, I will provide graded feedback within two weeks.
You are encouraged to provide constructive comments for improving this
course for furthering your learning throughout the semester.
There will be an opportunity for
anonymous course feedback
at the end of the term, in which I hope you all participate. Through your
feedback I can improve this course and others for future students.
Academic Integrity
I will abide by the above syllabus and grade your work fairly.
As stated in the Hendrix Academic
Integrity Policy, all students have agreed to adhere to the following principles:
- All students have an equal right to their opinions and to receive constructive criticism.
- Students should positively engage the course material and encourage their classmates to do the same.
- No students should gain an unfair advantage or violate their peers' commitment to honest work and genuine effort. It follows that any work that a student submits for class will be that student's own work. The amount of cooperation undertaken with other students, the consistency and accuracy of work, and the test-taking procedure should adhere to those guidelines that the instructor provides.
- Members of the Hendrix community value and uphold academic integrity because we recognize that scholarly pursuits are aimed at increasing the shared body of knowledge and that the full disclosure of sources is the most effective way to ensure accountability to both ourselves and our colleagues.
More details of our departmental stance on integrity can be found in the
Hendrix
Computer Science Academic Integrity Policy
Learning Accomodation
I will make this classroom an open and inclusive environment,
accommodating many different learning styles and perspectives.
Any student
seeking accommodation in relation to a recognized disability should inform me
at the beginning of the course.
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.
Hendrix College values a diverse learning environment as outlined in the College's
Statement on Diversity.
All members of this community are expected to contribute to a respectful, welcoming,
and inclusive environment for every other member of the community. If you believe
you have been the subject of discrimination please contact Dean Donna Eddleman
at eddleman@hendrix.edu or
501-450-1222 or the Title IX Coordinator Jennifer Fulbright at
titleix@hendrix.edu or 501-505-2901.
For more information on Hendrix non-discrimination policies, visit
hendrix.edu/nondiscrimination.
Physical and Mental Health
I am willing to work with you individually when life goes off the rails.
Coursework and college in general can become stressful and overwhelming, and
your wellness can be impacted when you least expect it. You should
participate in self-care and preventative measures, and be willing to
find support when you need it.
- The Office of Counseling Services
welcomes all students to see a counselor
in a private and safe environment regardless of their reasons for making an
appointment. Counseling services are available to all Hendrix students
at no cost.
- Student Health Services
provides free healthcare to Hendrix students. Services are provided by an
Advanced Practice Registered Nurse (APRN) in collaboration with a local physician.
The Offices of Counseling Services and Student Health Services are located in the white house
behind the Mills Center for Social Sciences at
1541 Washington Avenue.
Your health is important, and I care more about your health and well-being than I do about this class!