Resources for the Course
Books and References¶
We're loosely following a homegrown book:
Other than that, the following books/sources are good references for portions of the course:
- Open Data Structures Book by Pat Morin (free access)
- Java for Python Programmers (free access)
- Java Structures by Duane A. Bailey (free access)
- Data Structures and Algorithm Analysis by Clifford A. Shaffer (free access)
- Data Structures and Abstractions with Java by Frank M. Carrano and Timothy M. Henry
- Data Structures and Algorithms in Java by Michael T. Goodrich, Roberto Tamassia, and Michael H. Goldwasser.
- Interactive Visualizations of Algorithms
Below are some shorter "cheat sheet" style notes:
Typesetting Computer Science/Math Documents¶
In addition to prose, technical documents contain code and mathematical expressions. While Microsoft Word, Pages, and Google Docs can typeset code and math, LaTeX turns out to be one of the best options and the most popular choice when it comes to preparing technical documents.
Homework Template
For this course, we have created a simple template for you, and it will look like this PDF after you compile it.
LaTeX is built from Don Knuth's TeX typesetting language, and has grown through community support to be both extremely powerful and easy to use.
A good place to start is this excellent tutorial: Getting to Grips with LaTeX.
Other than that, there are any number of excellent resources about how to use LaTeX; a few are listed here for your convenience:
- The Wikipedia page, for more general information and history
- Adam Blank's excellent LaTeX guide.
- The Wikibook on LaTeX
- A (Not So) Short Introduction To LaTeX2e
- The Comprehensive TeX Archive Network (users group)
- The TeXLive Homepage
- detexify is a learning-based symbol classifier that will help you figure out the right LaTeX command to produce a symbol you can draw but not name.
LaTeX source files can be created with any text editor. Excellent choices include:
- Visual Studio Code (Vscode)
- Vim,
- Emacs, and
- Sublime
If you prefer LaTeX specific IDEs, check out the following:
- kile, the KDE LaTeX IDE
- TeXStudio, a LaTeX IDE
- TeXworks
- TeXclipse, an Eclipse plugin for LaTeX
- TeXnicCenter, an IDE for Windows
Working With Java Code¶
Writing Java programs in a plain-text editor is generally painful. There are a number of good integrated-development editor (IDE) options. We recommend the following:
- IntelliJ IDEA is arguably the most advanced Java IDE out there. The community education is free and is more than adequate for the class. With your
mahidol.edu
email address, you can request an education license for the ultimate version (normally $599 + tax) at no cost. - Visual Studio Code (Vscode) is much lighter weight and is generally adequate for this class. You should definitely install the Java langauge extension. Check out this guide.
Aside from IDEs, Java Visualizer is a website that allows you to visualize what the code is doing.