95-771 Data Structures and Algorithms for Information Processing

[ Home | Course Info | Schedule | Course description]


Course Syllabus


Michael J. McCarthy
Email: mm6@andrew.cmu.edu

Zoom URL: Please see Canvas and look at "Home".
Officer Hours T.H. 1:00-3:00 in HBH 3015

Teaching Assistant:

Name: Xiyang Hu
Email: xiyanghu@andrew.cmu.edu
Office Hours: Please see Canvas and look under "Home".

Current Lecture Videos:

For current videos, see Canvas and look under zoom cloud recordings.


95-712 Object-oriented Programming in Java or permission of the instructor.

Grading Scale:

97.5 - 100 A+
92.5 - 97.4 A
90.0 - 92.4 A-
87.5 - 89.9 B+
82.5 - 87.4 B
80.0 - 82.4 B-
77.5 - 79.9 C+
72.5 - 77.4 C
70.0 - 72.4 C-


Five or six programming projects 50% (equally weighted, no collaboration)

Each project will normally consist of several programming activities. 

Five pop quizzes 5% (low quiz score dropped).

Midterm 20% (Closed book)

Final 25% (Closed book and comprehensive)


Late Assignment Policy:

You have 7 grace days to spend. This policy is meant

to cover such issues as job interviews, travel and so on. After the seven days are spent

there is a penalty of 10% per day late.

Policy on collaboration:

Unless otherwise noted, collaboration is not permitted. While it is fine to discuss projects with others it is a cheating violation when code is copied or shared and not cited. Be sure to cite any external source of code with a clear URL. If a student is caught sharing his or her work with another, a failing grade may be assigned for the course. Likewise, if a student uses another's work when completing his or her own, a failing grade may be assigned for the course. In either case, the Dean will be notified. Github submissions and past student solutions are checked. In addition, the exams are designed to test your knowledge and coding skills. If you copy code from a third party source (it is sometimes legitimate to do so) be sure to cite your source. If the source is not cited it is an academic violation.

Policy on grading complaints:

Grading mistakes may occur. Please contact the TA who graded your assignment about grading mistakes. It will be up to the TA to handle the complaint. If you are still not satisfied with the TA's grade please contact me immediately. My initial reaction will be to support the TA's grade. In some cases, however, I might agree with the student and ask for the grade to be adjusted. Please make any grading concerns known to the TA immediately. Set up an appointment with the TA and get the matter resolved.

Use of Canvas

There will be a Canvas site for the course. The Piazza links are located there and will be used as a discussion board. Grades will be posted there and assignments will be submitted there. It is far better to post a question to the discussion board than it is to send your instructor or TA an email. Answers posted there are available for all to see. The main site for the course (syllabus, course description and schedule) is this page.

Software Requirements:

The student needs to download and install the most recent IntelliJ Ultimate IDE. Available here.

Time and place:

W. 6:20-9:10 PM in HBH 2003

FERPA Statement:

Classes will be recorded via Zoom so that students in this course (and only students in this course) can watch or re-watch past sessions. Please note that breakout rooms will not be recorded. These recordings will be available on Canvas as soon as possible after each session. Please note that you are not allowed to share these recordings. This is to protect your FERPA rights and those of your fellow students.

Recommended Text:

Michael Main, Data Structures & Other Objects Using Java Fourth Edition (Addison-Wesley Longman, ISBN-13 978-0132576246)

Optional Text:

Corman, et al., Introduction to Algorithms (1990, MIT Press, ISBN 0262031418)

Learning Objectives:

At the completion of this course the student will be able to:

1. Design or select an appropriate algorithm for a particular problem.

2. Design or select an appropriate data structures for a particular problem.

3. Write programs that make good use of stacks, queues, linked lists, trees, graphs, and hash tables.

4. Analyze the runtime performance of algorithms in terms of Big O, Big Omega, and Big Theta notation.

5. Understand worse case, best case, average case and amortized analysis.

6. Understand the distinction between algorithm correctness and performance.

7. Understand the theory of NP-completeness.

8. Differentiate between problems that are computable and those that are not.

Good health:

Take care of yourself.  Do your best to maintain a healthy lifestyle this semester by eating well, exercising, avoiding drugs and alcohol, getting enough sleep and taking some time to relax. This will help you achieve your goals and cope with stress.

All of us benefit from support during times of struggle. You are not alone. There are many helpful resources available on campus and an important part of the college experience is learning how to ask for help. Asking for support sooner rather than later is often helpful.

If you or anyone you know experiences any academic stress, difficult life events, or feelings like anxiety or depression, we strongly encourage you to seek support. Counseling and Psychological Services (CaPS) is here to help: call 412-268-2922 and visit their website here. Consider reaching out to a friend, faculty or family member you trust for help getting connected to the support that can help.

If you or someone you know is feeling suicidal or in danger of self-harm, call someone immediately, day or night:

CaPS: 412-268-2922

Re:solve Crisis Network: 888-796-8226

If the situation is life threatening, call the police:

On campus: CMU Police: 412-268-2323

Off campus: 911

Last Update: August 2021. Maintained by mm6@andrew.cmu.edu