Bryn Mawr College
CMSC 206: Data Structures
Spring 2015
Course Materials
Prof. Deepak Kumar
|
Texts | Important Dates | Assignments | Lectures | Course Policies | Links |
Instructors:
Deepak Kumar 246-B Park Science Building 526-7485 dkumar at brynmawr dot edu http://cs.brynmawr.edu/~dkumar |
Lecture Hours: Mondays & Wednesdays, 10:10a to 11:30a
Room: TBA
Lab: Tuesdays 12:15p to 2:15p in Room 231 (additional lab
hours will also available, see below)
Laboratories:
Lab Assistants: The following Lab assistants will be available during the week (names and schedules will be posted by the end of this week) for assistance on lab assignments.
|
|
Course Description (from the Course Catalog): Introduction to the fundamental algorithms and data structures using Java. Topics include: Object-Oriented programming, program design, fundamental data structures and complexity analysis. In particular, searching, sorting, the design and implementation of linked lists, stacks, queues, trees and hash maps and all corresponding complexity analysis. In addition, students will also become familiar with Java’s built-in data structures and how to use them, and acquire competency in using a professional grade IDE.
Here is what we plan to learn this semester:
January 21: First lecture
February 23: Exam 1
March 30: Exam 2
April 29: Last lecture/Exam 3
Assignments
- Assignment#1 (Due on Wednesday, January 28): Click here for details.
- Assignment#2 (Due on Wednesday, February 4): Click here for details.
- Assignment#3 (Due on Monday, February 16): Click here for details.
- Assignment#4 (Due on Monday, March 2): Click here for details.
- Assignment#5 (Due on Monday, April 6): Click here for details.
- Assignment#6 (Due on Monday, April 27): Click here for details.
Lectures
- Week 1 (January 19, 21)
January 19: No Class. Martin Luther King Day.
January 21: Course introduction, adminstrivia. Looking at data, data abstractions, structures, algorithms, etc. Processing/Java review.
Read: Appendix A from K&W, Chapter 1 from K&W.
Assignment#1 (Due on Wednesday, January 28): Click here for details.
Sample Processing code: The USPS Volume Processing program (without the data). If you'd like, you can get the data from here.
Python Graphics Library: Visit this page if you need information on doing simple graphics in Python.
- Week 2 (January 26, 28)
January 26: Java Basics: program structure, basic input/output, simple dialog-based I/O, Data types and variables, constants, type conversion, reference variables, arrays, statements, methods - class methods and instance methods, error detection and correction: exceptions, try-catch blocks.
Lab#1: Be sure to work through the Lab handout from class. You have to hand in your Lab Report on Monday, February 2.
Read: Appendix A from Koffman & Wolfgang
Assignment#2 (Due on Wednesday, February 4): Click here for details.
January 28: Java Basics: program structure, basic input/output, simple dialog-based I/O, Data types and variables, constants, type conversion, reference variables, arrays, statements, methods - class methods and instance methods, error detection and correction: exceptions, try-catch blocks.
Read: Appendix A from Koffman & Wolfgang
- Week 3 (February 2, 4)
February 2: Happy Groundhog Day! Local groundhogs did bnot see their shadows this morning, though I hear that Punxatawny Phil did. So, as the legend goes, six more weeks of winter in Punxatawny but for us (hopefully!) spring is around the corner. We will continue today with our review of Java Basics. Learn about exceptions and exception handling, file I/O in Java using the Scanner class.
Read: All this is material from Appendix A, continue to read that section.
Lab#2: Be sure to work through the Lab handout from class. You have to hand in your Lab Report on Monday, February 9.
February 4: File I/O and exception handling examples. Doing object-oriented programming (OOP) in Java. Designing classes (basic UML), writing code to implement classes. Deliberating about public and private prefixes in class design. Examples.
Read: All this is material from Appendix A, continue to read that section.
Assignment#3 (Due on Monday, February 16): Click here for details.
- Week 4 (February 9, 11)
February 9: OOP in Java. Designing classes. Inheritance in OOP. Example: Fraction class.
Read: Chapter 1 from K&N.
Lab#3: This lab will help you start and complete Assignment#3. Click here for the lab handout. Click here for the Lab Log.
New Lab hours for the rest of the semester: Tuesdays 12:15p to 2:15p in Room 231 (New Lab hours to accomodate students with classes that overlapped with earlier times)
February 11: ADTs and Interfaces in Java. The Java Collections Framework (an introduction). The ArrayList class in Java. Under the hood: implementing your own list class (using fixed size arrays).
Read: Chapter 2 from K&N.
- Week 5 (February 16, 18)
February 16: Implementing our own List ADT: Version 1 (Using fixed size arrays), Version 2 (Making it generic), Version 3 (Using dynamic arrays). Comparing it to Java ArrayList.
Read: Chapter 2 from K&W.
Assignment#4 (Due on Monday, March 2): Click here for details.
February 18: Computational Complexity. CPU speeds (FLOPS) and what they mean. Big-Oh notation for worst case complexity of algorithms. Growth rates of some common functions.
Read: Chapter 2 from K&W
- Week 6 (February 23, 25)
February 23: Exam 1 is today.
February 25: Exam review. Linked Lists: Design & implementation.
Bryce's Lab Hours today are from 8:30-10:30p
- Week 7 (March 2, 4)
March 2: Implementing Linked Lists. Comparing List implementations.
March 4: No class. Deepak is out of town.
- Week 8 (March 9, 11)
Spring Break!
- Week 9 (March 16, 18)
March 16: Review of Assignment#4, linked lists. Introduction to Stacks & Queues. Stack applications: pre/post fix expressions. Using Iterators.
Read: Chapters 3 & 4 from K&W.
March 18: No class due to Community Learning Day.
- Week 10 (March 23, 25)
March 23: Queues: Applications. Discrete Event Simulation.
Assignment#5 (Due on Monday, April 6): Click here for details.
March 25:Recursion. Writing recursive functions.
Read: Chapter 5.
- Week 11 (March 30, April 1)
March 30: Exam 2 is today.
April 1: Sorting, Part 1 (Basic sorting algorithms): Bubble Sort, Selection Sort, Insertion Sort. Complexity/Comparison.
Read: Chapter 8 (SEctions 8.1-5 only).
- Week 12 (April 6, 8)
April 6: Sorting, Part 1 (Basic sorting algorithms): Bubble Sort, Selection Sort, Insertion Sort. Complexity/Comparison.
Read: Chapter 8 (SEctions 8.1-5 only).
April 8: Hierarchical Data Structures: Trees - terminology and properties, binary trees, expression trees, binary search trees, tree traversals: Preorder, inorder, and postorder traversals.
Read: Chapter 6
- Week 13 (April 13, 15)
April 13: Implementing Binary Trees.
Read: Chapter 6.
Assignment#6 (Due on Monday, April 27): Click here for details.
April 15:Implementing Binary Search Trees. The Comparable interface in Java. Defining your own exceptions.
- Week 14 (April 20, 22)
April 20: Heaps & Priority Queues. Sets and Maps in Java Collections Framework. Hash Tables: An introduction.
Read: Chapter 7 (sections 7.1-7.3 only)
April 22: Hash tables internals: Open Addressing (w/ Linear Probing, Quadratic Probing), Chaining. Sorting: Quick Sort, Heap Sort, Merge Sort. How to sort using Java libraries.
- Week 15 (April 27, 29)
April 27: Quicksort algorithm. Intuition behind Merge Sort. Course Review.
April 29: Exam 3 is today.
Communication
Attendance and active participation are
expected in every class. Participation includes asking questions,
contributing answers, proposing ideas, and providing constructive
comments.
As you will discover, I am a proponent of two-way communication
and I welcome feedback during the semester about the course. I am available to answer questions, listen to concerns, and
talk about any course-related topic (or otherwise!). Come to
office hours! This helps me get to know you. You are welcome to
stop by and chat. There are many more exciting topics to talk
about that I won't have time to cover in-class.
Please
stay in touch with me, particularly if you feel stuck on a topic
or assignment and can't figure out how to proceed. Often a quick
e-mail, phone call or face-to-face conference can reveal solutions
to problems and generate renewed creative and scholarly energy. It
is essential that you begin assignments early.
Grading
There will be 6-8 assignments,
weighted equally in the final grading (see below). Assignments must be
submitted according to the instructions provided in each assignment.
There will be several assignments,
weighted equally in the final grading (see below). Assignments must be
submitted according to the instructions provided in each assignment. Each evaluation component (assignment or exam) will receive a grade between 0.0 and 4.0. At the end of the semester, final grades will be calculated as a
weighted average of all these grades according to the following weights:
Exam 1: 20%
Exam 2: 20%
Exam 3: 20%
Assignments: 40%
Total: 100%
Incomplete grades will be given only for verifiable medical
illness or other such dire circumstances, if supported by your Academic Dean in a written/electronic communication.
Technology in the classroom
The class meetings/lectures will be a place to learn the concepts that are a part of the syllabus. I will, in the course of a lecture, write code on the board, and/or even do some live coding in class. The objective of this is to illustrate to you how to go about applying the concepts in practice. It is NOT a place for you to open your laptops and start to code with me. In fact, you are encouraged NOT to bring your laptops to class to use them for any purpose. It is distracting to other students. Phone (smart or otherwise) and tablet use during class meetings is also strongly discouraged. Listen, understand, ask questions, and take notes in a notebook if you need to. You will learn more!
The assignments in this course are a place for you to exercise your learning of the concepts and apply them in actual working programs. The best way to get the most of of this course is to try out and code the concepts learned in the class (outside the class!). Do not be afraid to try things! This will improve your understanding and raise questions that you should feel free to bring forward in class. A quick word of advice: stay abreast of the material covered in class, and start your assignments on the day they are announced.
Submission, Late Policy, and Making Up Past Work
All work must be turned in either in hard-copy or electronic submission, depending on the instructions given in the assignment. E-mail submissions, when permitted, should request a "delivery receipt" to document time and date of submission. Extensions will be given only in the case of verifiable medical excuses or other such dire circumstances, if requested in advance and supported by your Academic Dean.Exams
There will be three exams in this course. The exams will be closed-book and closed-notes. The exams will cover material from lectures, homeworks, and assigned readings.
Study Groups
I encourage you to discuss the material and work together to understand it. Here are some thoughts on collaborating with other students:
If you have any questions as to what types of collaborations are allowed, please feel free to ask.
Academic Support Services
Bryn Mawr College offers a wide array of resources to help students be successful. The support services listed below can help Bryn Mawr students to:
For more information, please visit: Bryn Mawr College Academic and Student Support Services
Created on January 6, 2015.