Overview

Welcome: In this course, each voice in the classroom has something of value to contribute. Please take care to respect the different experiences, beliefs and values expressed by students and staff involved in this course. My colleagues and I support UMass’s commitment to diversity, and welcome individuals regardless of age, background, citizenship, disability, sex, education, ethnicity, family status, gender, gender identity, geographical origin, language, military experience, political views, race, religion, sexual orientation, socioeconomic status, and work experience.

Course description: COMPSCI 190D introduces foundational abstract data types and algorithms. The main focus is on the use of data structures in designing and developing programs to solve problems in a variety of domains. Specific topics include lists, sets, maps, graphs, stacks, queues, searching, and sorting. There will be weekly programming assignments, assignments in discussion sections consisting of programming and written exercises, and several exams. This course is not a substitute for COMPSCI 187. If unsure of whether this course or COMPSCI 187 is more appropriate, contact instructor.

Who is this course for? This fall, CICS is introducing a new course – this one! – COMPSCI 190D: Using Data Structures. COMPSCI 190D is intended for students who have completed COMPSCI 121. It will focus on using, rather than implementing and analyzing, the data structures now studied in COMPSCI 187, along with additional structures (such as sets and maps) which are not covered there but that are useful for practical programming.

For some students, 190D can serve as an alternative to 187. It will be recognized as one of the core courses for the proposed Informatics major, and the practical programming with data structures in 190D will be adequate preparation for some courses such as COMPSCI 326.

Computer Science majors (both BA and BS) must still take 187, which is a prerequisite for all the 200-level core courses. But we hope that many majors and applicants to the major will find 190D to be good additional advance preparation for 187.

Prerequisites: COMPSCI 121 (C or better) and Basic Math Skills (R1).

Instructor:
Marc Liberatore
Email: liberato@cs.umass.edu
Phone: 413-545-3061 (on campus: 5-3061)
Office: Computer Science Building, room 318
Office hours: Wed 10:00am–12:00pm

Teaching Assistant:
Garrett Bernstein
Email: gbernstein@cs.umass.edu
Office hours: Lederle Graduate Research Tower (LGRT) room 220, Mon 3:45–4:45, Wed 2:30–3:30

Online questions and answers:
This term we will be using Piazza for questions and answers. Find our class Piazza page at: https://piazza.com/umass/fall2016/compsci190d/home

Class meetings: Hasbrouck Lab Addition (HASA) room 126, TuTh 4:00–5:15pm. Discussion sections meet separately; check your schedule in SPIRE for the time and location.

Materials: Most technical material will be presented in lecture, on handouts, or on the course website. For students who want additional references, I suggest several optional resources:

  • The Java Tutorials, likely already familiar to you from COMPSCI 121 or the equivalent, are guides to the Java language. I’ll note in the schedule specific “trails” that you may find helpful.
  • Similarly, the Java Platform API provides a comprehensive description of all classes Java Platform; we’ll make extensive use of some of them, and they are fully documented by Oracle.
  • Think Java: How to Think Like a Computer Scientist, 1st edition, by Allen B. Downey and Chris Mayfield. Think Java is an alternative to the COMPSCI 121 textbook, and covers about the same material. It primarily focuses on the craft and science of problem solving with computers, with a secondary focus on Java. You may find this book useful to review before the start of the semester or during the first few weeks of this course.
  • Learning Java, 4th edition, by Patrick Niemeyer and Daniel Leuck. This book is aimed at working programmers, not computer scientists, and focuses much more on use of Java, tooling in the Java ecosystem, and practical considerations than Think Java. You may find it useful when using some of the tools we require in this course, and when completing some of the advanced (and optional) parts of later programming assignments.
  • Java Precisely, 3rd edition, by Peter Sestoft. If you want to know something about the Java language – syntax or semantics – this book is a great reference. Note that it is not a textbook or a how-to manual, but a reference book that explains what specific part of the language mean. It also provides some explanation of important parts of the Java standard library (also known as the class library or Java Platform API).
  • Eclipse IDE Pocket Guide, by Ed Burnette. You might find it helpful to have a guide to Eclipse, the Integrated Development Environment we’ll be using in this course. The Pocket Guide is not comprehensive, but it is a valuable reference to the most commonly-used parts of the IDE.