CMPS 12B/M - Winter 2018
Introduction to Data Structures

Web Resources
Programming Assignments
Lab Assignments

username: cmps-12b-2
password: winter17

Midterm Review Questions (questions from Dr. Tantalo).

Midterm 2 Review Questions (Questions From Dr. Tantalo).

Final Exam Review Questions (Questions from Dr. Tantalo)

12B Description: Teaches students to implement common data structures and the algorithms associated with each data structure, through progressively difficult exercises. Topics include big "O" notation; pointers, recursion (induction), and dynamic allocation; linked lists and list processing; stacks, queues, binary trees and binary search trees; simple sorting techniques and simple search techniques. Students will gain a working knowledge of the elements of the Java and C programming languages. Prior experience with Unix is assumed. Prerequisite(s): 

Prerequisites: course 11 or 12A or Computer Engineering 13. Concurrent enrollment in course 12M required.

12M Description: Complements course 12B, gaining additional competence with a number of important software development tools, languages, and techniques. Included are advanced Unix features and utilities such as grep, find, diff, the shell, and pipes; C programs utilizing I/O, arrays, pointers, and structures; a scripting language to perform simple text and file manipulation; and the make utility. Concurrent enrollment in course 12B required.

Meeting time
TuTh 03:20PM-04:55PM Humanities Lecture Hall
Instructor: Dustin Adams (homepage)
Office: E2 249B
Office Hours: TuTh 5:10 - 6:10pm, Wednesday 11am-1pm, Monday and Friday by appointment (appointment must be made at least 48 hours in advance).
Phone: 831-459-1339

Teaching Assistants
Chandranil Chakraborttii (
Sean-Ryan Smith (
Zehui Cheng (

TA Office Hours 
Sean: Monday 3-4pm, Thursday 12-1pm (E2 room 309)
Zehui: Monday & Friday 5pm - 6pm (Baskin Engineering room 312 C/D)
Chandranil: Monday 3-5pm (E2 room 392)

Lab Sections: (Jack Baskin 109)
A: Mo 01:00PM-02:00PM (Chandranil, Rohan)
B: Mo 02:00PM-03:00PM (Sean, Rohan, Chandranil)
C: Th 01:00PM-02:00PM (Sean, Zehui)
D: Th 02:00PM-03:00PM (Sean, Zehui)
E: Fr 12:00PM-01:00PM (Chandranil, Zehui, Steven)

MSI Tutors

Tyler Ebding( - Learning Assistant
Xiangfeng Zhu ( - Tutor

Monday, 4:00-5:00, Digital Arts Research Center 206
Tuesday, 2:00-3:00, LSS/HSI Cowell College Mobile Office Lobby
Thursday, 11:40-12:40, Digital Arts Research Center 206
Friday, 10:40-11:40, LSS/HSI Cowell College Mobile Office Lobby

Sign up at (signup starts Tu 1/16)
Mo: 12:00pm - 1:00pm
Mo: 4:00pm - 5:00pm
Tu: 3:15pm - 4:15pm
We: 2:40pm - 3:40pm

Recommended Text: Data Abstraction and Problem Solving with JAVA (2nd edition) by Frank M. Carrano and Janet J. Prichard. Addison Wesley 2005 (ISBN 9780321304285). We will cover (roughly) the following sections: 3.1-3.5, 4.1-4.3, 5.1-5.3, 7.1-7.6, 8.1-8.5, 9.1-9.3, 11.1-11.4, 13.2.

Supplementary Text:
C for Java Programmers: A Primer Charlie McDowell. 2007.
Your Unix (2nd edition) Sumitabha Das. McGraw-Hill 2006 (ISBN 978007250422).
Java By Dissection Ira Pohl and Charlie McDowell. 2006.

Other online resources:

Programming in Java
Java SE 8 Documentation
Java Tutorial
Java Language Specification

Programming in C

C Programming
Programming in ANSI C
Notes on Programming in C
C Library Reference Guide
Another C Library Reference 
TutorialsPoint: C Library Reference


O'Reilly text on the Unix Operating System
Unix Tutorial
list of Unix Tutorials

An extensive list of   Vi tutorials
Free Software Foundation   Gnu Emacs Manual

Simple Makefile Tutorial
GNU make

Campus Resources
Information Technology Services
Computer Labs

Coursework and Evaluation for CMPS 12B:

  • Programming Assignments (5) due roughly every 2 weeks.
  • Midterm Exam 1 will be held Thursday, February 1.
  • Midterm Exam 2 will be held Thursday, March 1.
  • Final Exam will be held Wednesday, March 21 4:00–7:00 p.m.. 

***Latework Policy: Late assignments (even by 1 minute) will be accepted up to 2 days after the assignment due date for 80% credit; assignments will not be accepted after 2 day grace period.

Coursework for 12B will be weighted as follows:

  • Programming Assignments: 40%
  • Midterm Exam 1: 20%
  • Midterm Exam 2: 20%
  • Final Exam: 20% 

Coursework and Evaluation for CMPS 12M:

  • Lab Assignments (7) due at 7 day intervals.
  • 12B Final Exam (Wednesday, March 21 4:00–7:00 p.m.) will also count in your 12M grade. 

Coursework for 12M will be weighted as follows:

  • Lab Assignments: 80%
  • Final Exam: 20%

Grading scale for both 12B and 12M

A+ 97%-100%
A 93%-96%
A- 90%-92%
B+ 87%-89%
B 83%-86%
B- 80%-82%
C+ 76%-79%
C 70%-75%
C- 67%-69%
D+ 64%-66%
D 61%-63%
D- 58%-60%
F 0%-57%

Letter grade boundaries may be lowered at my discretion in order to eliminate some borderline cases.

Accommodations for Students with Disabilities

UC Santa Cruz is committed to creating an academic environment that supports its diverse student body. If you are a student with a disability who requires accommodations to achieve equal access in this course, please submit your Accommodation Authorization Letter from the Disability Resource Center (DRC) to me privately during my office hours or by appointment, preferably within the first two weeks of the quarter. At this time, I would also like us to discuss ways we can ensure your full participation in the course. I encourage all students who may benefit from learning more about DRC services to contact DRC by phone at 831-459-2089, or by email at 

If you qualify for classroom accommodations because of a disability, please get an Accommodation Authorization from the Disability Resource Center (DRC) and submit it to me in person outside of class (i.e. during office hours) within the first two weeks of the quarter. Contact DRC at 459-2089 (voice), 459- 4806 (TTY), or for more information.

Academic Honesty

The Baskin School of Engineering has a zero tolerance policy for any incident of academic dishonesty. If cheating occurs, consequences may range from getting zero on a particular assignment to failing the course. In addition every case of academic dishonesty is referred to the students’ college Provost, who sets in motion an official disciplinary process. Cheating in any part of the course may lead to failing the course, suspension or dismissal from the Baskin School of Engineering, or from UCSC.

What is cheating? In short, it is presenting someone else’s work as your own. Examples would include copying another students’ lab or programming assignment, or allowing your own work to be copied. You may discuss programs with fellow students, but your collaboration must be at the level of ideas only. You may freely give and receive help with the computer facilities, editors, the UNIX operating system, and the proper use and syntax of the Java programming language; but you may not copy, paste, email, transfer or in any way share source code. If you do collaborate (legitimately) or receive help from anyone,  you must credit them by placing their name(s) at the top of your program. Please go to to see the University's policy on Academic Misconduct.