CSCE 311: Data Structures and Algorithms

Spring 2015

This is an introductory course to algorithms and data structures for students with diverse non-CS background but interested in informatics. Foundational coverage of algorithms includes both problems (such as indexing, searching, sorting, and pattern matching) and methods (such as divide-and-conquer, dynamic programming, greedy, network flow and graph theory). Foundational coverage of data structures includes lists, tables, trees, graphs, and multidimensional arrays. Advanced topics will be studied in the context of informatics applications. Specifically, students will learn the fundamental ideas for how to efficiently analyze biological DNA sequence and images, and how to solve challenging problems in general informatics.



Name: Juan Cui
Office: Avery 122B
Tel: 4024725023
Office Hours: M W F 2:30-3:20 pm or by appointment


Teaching Assistant

Name: Kevin Chiang
Office: Avery 122c
Office hours:  T 9:00-10:00 am, Th 1:30-2:30pm or by appointment


Lectures & Labs

Lecture: MWF 1:30-2:20pm, Avery Hall 119
Lab: MWF 8:00-9:15am, Avery Hall 21


Before taking this class, students are required to learn at least one programming language or upon instructor’s permission (The official requirement is grade of “Pass” or “C” or better in CSCE155)

Text Book

  • Problem Solving with Algorithms and Data Structures Using Python 2nd Ed. by Miller and Ranum (free online version).
  • Introduction to Algorithms, 3rd ed. by Cormen, Leiserson, Rivest, Stein.


  • Python Website (includes software, tutorials, reference, etc.)
  • Python Books:
    • The Quick Python Book, 2nd ed. by Ceder.
    • Python Pocket Reference, 4th ed. by Lutz.
    • Cracking the Coding Interview by Laakman.
  • Learn Python the Hard Way
  • Videos, etc. from a similar course at MIT
  • Kleinberg and Tardos: Algorithm Design. Addison-Wesley, 2005
  • Gibbons: Algorithmic Graph Theory. Cambridge University Press, 1985

Homework Assignments

The assignments are posted on the class webpage on the Blackboard system and are due at the class time on the indicated dates. You will be required to submit an on-line copy of your assignment through Web Handin system on the due date. You are expected to write well-documented, modular code. Programs that do not compile or do not run will not receive any credit. Programs that compile and run are graded as follows:

10% Documentation: program heading (authorship info, date, description) and other comments. 15% Programming Style: proper indentation, clear program flow, sensible variable names, etc. 15% Testing: if program takes correctly-formatted input and produces correctly-formatted output. 45% Program Correctness 15% Algorithm Design

Mid. and Final Exam

  • Midterm: March 3, 1:30-2:20pm
  • Final: May 6, 1:00-3:00pm



Attendance: 5%
Homework Assignments (written and programming):  40 %
Midterm: 15 %
Lab: 10 %
Quizzes: 10%
Final Exam: 25 %


Students with disabilities are encouraged to contact the UNL Office of Services for Students with Disabilities (SSD) for a confidential discussion of their individual needs for academic accommodation. It is the policy of the University of Nebraska-Lincoln to provide flexible and individualized accommodation to students with documented disabilities that may affect their ability to fully participate in course activities or to meet course requirements. To receive accommodation services, students must be registered with SSD Office, 132 Canfield Administration, 472-3787 voice or TTY.

Academic Integrity

The CSE Department has a policy to promote and enforce academic integrity. Violations of academic integrity will result in automatic failure of the class and referral to the proper university officials. The work a student submits in a class is expected to be the student’s own work and must be work completed for that particular class and assignment. Students wishing to build on an old project or work on a similar topic in two classes must discuss this with both professors. Academic dishonesty includes: handing in another’s work or part of another’s work as your own, turning in one of your old papers for a current class, or turning in the same or similar paper for two different classes. Using or otherwise obtaining another’s answers for an examination also represents a breach of academic integrity. Those who share their code and those who copy other’s code will be penalized in the same way; both parties will be considered to have plagiarized.


Course Schedule