COMP 15 - Data Structures

Summer 2019

(August, 2019) This page is the mirror of Comp 15 (Summer 2019) course page, and is no longer updated.
For the current semester, please check https://www.cs.tufts.edu/comp/15/

Staff E-mail (*) Office hours Location
Tomoki Shibata tshibata (at) cs.tufts.edu Mon. 5-6pm, also available Wed. after class Halligan 209
Matthew Russell mrussell (at) cs.tufts.edu Tue. 5-7pm, Thur. 3-5pm Halligan 209

(*) If you have questions about the projects, labs, etc., please come to one of the office hours, or, use the discussion feature on Canvas instead of sending emails to the course staff.

Course Inforamtion
Time Wed. 6:00PM - 9:30PM
Lectures Halligan Hall, Room 108
Labs Halligan Hall, Room 118
Midterm July 3, in class
Final August 7, in class
Links Canvas, Gradescope, Feedback?

Announcements

Schedule

Note: The schedule is tentative and is subject to change based on class progress.
(*) Lab is due by 11:59 PM on the due date.
(**) Teach Yourself report is due by 6:00 PM on the due date.

Week Date Topic In-Class Activity Lab (*) Teach Yourself (**)
1 May 22 Course Overview, Arrays
(Classes, Instances)

P1: Card Deck
A1: handout L1: Taming The Tools
[Due: May 23]
T1: man, ssh, exit
[Due: May 29]
2 May 29 Linked Lists
(Memory management)
A2: handout L2: Memory Management
[Due: May 30]
T2: pwd, cd, ls
[Due: June 5]
3 June 5 Linked Lists (cont.), Complexity Analysis
(Deep copy, Shallow copy, Exceptions)

P2: Event Scheduler
A3: handout L3: Exceptions
[Due: June 6]
T3: touch, mkdir, cp
[Due: June 12]
4 June 12 Stacks, Queues, Recursion
(Interfaces)
A4: handout L4: Recursion
[Due: June 14]
T4: rm, rmdir, mv
[Due: June 19]
5 June 19 Sorting
(Unit testing)

P3: Sorter
A5: handout L5: ADT
[Due: June 21]
T5: cat, head, tail, less
[Due: June 26]
6 June 26 Sorting (cont.), Trees
(Review for midterm exam)
A6: handout L6: Converting Recursion to Loop
[Due: June 28]
 
7 July 3 Trees (cont.)
(Templates)

Midterm Exam
P4: Course Registration System
    T6: redirect (>, >>, <) and pipe (|), (Optional: echo, sort, uniq, wc)
[Due: July 10]
8 July 10 Trees (cont.), Binary Search, Heaps
(Const correctness)
A7: handout L7: Heapsort
[Due: July 12]
T7: diff, grep, clear
[Due: July 17]
9 July 17 Hash Tables
(STL)
A8: handout L8: Hashing competition
[Due: July 19]
T8: clang++, valgrind, make
[Due: July 24]
10 July 24 Graphs
P5: Word Frequency Database
A9: handout L9: Cycle detection
[Due: July 26]
T9: Check the link for details
[Due: July 30]
11 July 31 Special Topic: Object-Oriented Design (OOD)
(Operator Overloading)

Teach Yourself Presentations
(Review for final exam)
A10: handout L10: Shortest path problem
[Due: August 3]
T10: Showcasing portfolios (Check the post on Canvas)
[Due: August 9]
12 August 7 Final Exam      

Projects

(*) Plan and Refinement is due by 11:59 PM on the due date.
(**) Project is due by 6:00 PM on the due date.

# Topic Code Skeleton Plan Due (*) Project Due (**) Refinement Due (*)
P1 Card Deck /comp/15/files/p1 May 24 (Fri) June 2 (Sun) June 4 (Tue)
P2 Event Scheduler /comp/15/files/p2 June 7 (Fri) June 16 (Sun) June 18 (Tue)
P3 Sorter /comp/15/files/p3 June 21 (Fri) June 30 (Sun) July 2 (Tue)
P4 Course Registration System /comp/15/files/p4 July 10 (Wed) July 21 (Sun) July 23 (Tue)
P5 Word Frequency Database /comp/15/files/p5 July 26 (Fri) August 4 (Sun) August 6 (Tue)

Teach Yourself

The goal of Teach Yourself assignment is you make yourself feel comfortable with using Linux shell commands on terminal. You will be given a set of topics (Linux shell commands) per week. You are expected to do research on the given topics, and are expected to learn what the commands do and to have real experiences with using the commands. Note that you are expected to report your own experiences that are meaningful for you, not ones that you can find on online.

The deliverable of each Teach Yourself assignment is a written report that includes the followings:

The report should be precise and concise, and should fit within a single page or so. There is no specific format for the report. How you organize the report is completely up to you. However, it is highly recommended to leverage powers of colors, fonts, layouts, figures, and so on. Keep in mind that you are teaching yourself something new. You may make the report so it looks like one page of a pocket-sized reference book that you can refer to at any moments in future for your benefit.

T9: 1) Pick command(s) based on your interests. You can focus on one command or you can focus on one task which introduces more than one command. Some suggested topics include, but are not limited to: git, emacs, vim, zip, unzip, tar, chmod, ln, time, jobs, fg, ps, kill, scp, dc, bc, find, tree, nice, ping, find, cut, and so on.
2) Prepare your presentation. Your T9 report, which must be submitted in PDF format, will be printed out and will be distributed in class.
3) Pay attention to the due date.

Presentation format: 5 mins long. You can use your laptop; therefore, you are free to use any presentation strategies. The goal of your presentation is to share your experience with your classmates, so that your classmeates can learn something new (Teach Your Classmates). Your presentation should include a takeaway message and a demo that your classmates can try out later on.

Resources

Syllabus

Syllabus will be updated until the start of the semester without notice.

Course Information

Course title:
COMP 15, Data Structures
Course term:
Summer 2019, 12-Week Session
Course time:
Wednesday, 6:00 PM - 9:30 PM
Course location:
Halligan Hall, Room 108 (lectures) and Room 118 (labs)
Textbook:
There is no required textbook.
Prerequisites:
The completion of COMP 11 (Introduction to Computer Science) or instructor consent.
Instructor:
Tomoki Shibata (tshibata at cs.tufts.edu)
Teaching Assistant:
Matthew Russell (mrussell at cs.tufts.edu)

Description

In this course, we will study data structures and algorithms through major programming projects in the C++ programming language. We will begin with learning arrays and linked lists as foundations upon which to study other abstract data structures. Topics also include, but are not limited to, trees, graphs, as well as, dynamic storage allocation, recursion, and sorting.

Grading

Category Percentage
Programming Projects 40%
In-Class Activities 6%
Labs 7%
Teach Yourself 7%
Midterm Exam 20%
Final Exam 20%
Letter Grade Overall
A-, A, A+ 90.0-92.9, 93.0-96.9, 97.0-100
B-, B, B+ 80.0-82.9, 83.0-86.9, 87.0-89.9
C-, C, C+ 70.0-72.9, 73.0-76.9, 77.0-79.9
D-, D, D+ 60.0-62.9, 63.0-66.9, 67.0-69.9
F 59.9 and below

Note: The overall point will be rounded off to one decimal place.

Programming Projects: Students will have one programming project per (roughly) two weeks. Each project is equally weighted. Grading range will be 0 - 100 pts. A significant portion of the grade will be based on the correctness of program functionalities. Program codes that don't get compiled will be given zero credit and no partial credit will be given for the functionality portion.

There is a short period of time, called the refinement phase, after the main project due date. During the refinement phase, student may fix any issues they might find in their program code and can re-submit their updated project. Student will be given a half of the points for test cases that the resubmission passed but the original submission didn't. Student will loose points for test cases that the original submission passed but the resubmission didn't.

For example, assume there are six test cases, t1 through t6, each of which is worth 1 pt. At the main due date, the original submission passed t1, t2, and t3; that is, the original score is 3 pts. At the end of the refinement phase, the updated submission passed t1, t2, t4, t5, and t6 but not t3. With this example, the final score will be 3 + (3 / 2) - 1 = 3.5 pts. Just in case the final score was lower than the original score, then the original score will be considered as the final score.

In-Class Activities: In most cases, lecture includes one or more in-class activities. Handout for the activity will be distributed and collected during lecture time, and then it will be counted as class participation. The grading scale will be satisfactory (2 pts), acceptable (1 pt) or incomplete (0 pt).

Labs: Each lecture includes one lab session, except for the exam days. In each lab, students will learn programming concepts through hands-on experiences. Each lab is equally weighted. The grading scale will be satisfactory (2 pts), acceptable (1 pt) or incomplete (0 pt). Program codes that don't get compiled will be considered as incomplete, and no partial credit will be given.

Teach Yourself: This is a research assignment in which student is given a different set of topics per week, related to Linux shell commands, and write a report about how to use those commands. There will be a day that each student gives a presentation about the topic of their choosing in class (to teach yourself and your classmates). The grading scale will be satisfactory (2 pts), acceptable (1 pt) or incomplete (0 pt).

Exams: There are two exams, midterm and final. Each exam will take place in the regular class time and location. Each exam will take approximately 90-120 mins. Exams will be closed books, closed notes, and no electronic devices are permitted to use during exams. Each student may prepare a sheet of paper (US letter size or A4 size) with their own handwritten notes and may use it during exams. No makeups will be given. Student who receives accommodations should notify the instructor with necessary written documents at least 1 week before the exam date.

Late Assignment Policy: All projects, labs and Teach Yourself reports must be submitted on time via Gradescope. Student will receive no credit for late submissions. Assignments turned in via any means other than Gradescope will not be graded. In adversity circumstances, student must contact the instructor before the deadline to obtain written approval for turning in late. Student may be asked to provide the instructor with supportive written documents from academic Dean.

Policy for using Online Forum: Students are encouraged to use the discussion feature on Canvas to discuss concepts. To avoid committing academic misconduct, students may not attach any program code to their post, as well as, may not use the feature for sending "please-give-me-answer", "please-tell-me-how-to", and/or "please-debug-my-code" requests to the class. In such situations, students are rather encouraged to come to see the course staff in office hours.

Re-grading Policy: Requests for re-grading on assignments and exams must be submitted in writing via Gradescope within one week of when its grade is published, unless otherwise specified. Re-grading may result in a lower score.

Curving: Final course grades will be curved if necessary, and all students will be notified of the change.

Academic Integrity

Students are to follow the Tufts University's Academic Integrity Policy.

Accessibility

"Tufts University values the diversity of our students, staff, and faculty, recognizing the important contribution each student makes to our unique community. Students with disabilities are assured that the Student Accessibility Services office will work with each student individually to ensure access to all aspects to student life. Tufts is committed to providing equal access and support to all students through the provision of reasonable accommodations so that each student may access their curricula and achieve their personal and academic potential. If you have a disability that requires reasonable accommodations, please contact the Student Accessibility Services office at 617-627-4539, or through their email at Accessibility@tufts.edu, to make an appointment with the director to determine appropriate accommodations. Please be aware that accommodations cannot be enacted retroactively, making timeliness a critical aspect for their provision."

Acknowledgements

Some contents are based on course materials developed by professors who have taught Comp 15 at Tufts in past. Special thanks to Dr. Andrew Winslow, Dr. Partha Biswas and Prof. Mike Shah, whom Tomoki worked for in the past Tufts Summer courses. The lecutres and assignements include many ideas from their Summer Comp 15 and Comp 11. The course page is using a theme provided by Prof. Jeff Foster.