CSCI 151
Data Structures

background image from wikimedia CC BY 2.0

LECTURE 01

MWF 10:10am - 11:00am

Location

MCReynolds 315

Instructor

Dr. Gabriel Ferrer
ferrer@hendrix.edu

Office Hours

LAB 01

T 1:10pm - 4:00pm

Location

Snoddy Lab

Instructor

Dr. Mark Goadrich
goadrich@hendrix.edu

Office Hours


Overview

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.

Learning Goals

Upon completing this course, our goal is for you to be able to:

  1. Build substantial computer programs with graphical user interfaces to effectively solve realistic problems.
  2. Understand and implement fundamental data structures to manage complexity.
  3. Explain the compromises necessary to develop efficient programs.
  4. Use and justify appropriate programming algorithms for specific tasks.
  5. Decouple problem specification from program implementation through abstraction.
  6. Employ test-driven and empirical methods to understand the behavior of a program.
  7. Discuss the ways programming languages employ distinct features to solve problems.
  8. Develop an aptitude and skills for independent learning.

Software

Resources


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

Calendar

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

Formative Assessments

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:

# Name Assessment Type
0 Survey n/a
1 Eating Candy Java Programming
2 Planting a Garden Java Programming
3 ArrayStack Memory Problem Solving
4 ListNode Memory Problem Solving
5 ArrayQueue Memory Problem Solving
6 Heaps Data Structure Demonstration
7 Sorting Data Structure Demonstration
8 Asymptotic Analysis Problem Solving
9 Binary Search Trees Data Structure Demonstration
10 Hash Tables Data Structure Demonstration

Credit:

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.

Labs

# Name
1 CodingBat
2 How to Divide a Cake
3 Mazes: Enums and 2D Arrays
4 Mazes: Depth First Search
5 Mazes: Breadth First Search
6 JavaFX GUI
7 Mazes: A* Search
8 Sortimator
9 JavaFX Animation
10 Binary Search Trees
11 Playing Tic-Tac-Toe
12 Text Prediction
P Final Project work day

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.

Credit:

Skills Projects

# Name
1 Java and Arrays
2 GUI
3 Animation

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.

Final Project

# Name
4 Final Project

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.

Attendance

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.

Specifications Grading

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.

Formative Assessments

From the 10 formative assessments, 30 total credits are available:

Labs

From the 12 labs, 24 total credits are available:

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:

Final Course Grade


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.

Diversity and Inclusion

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!