Resources


Home   |   Schedule   |   Teaching   |   Resources   |   Biography

The following is a collection of links, cheat-sheets, source code, and other resources that I have put together for various courses and for my own use. You must have JavaScript enabled for the page to work properly. Click on any of the following headings to see more.
  • Ebooks

    • Computer Science (General)

      • The CS Field Guide - Currently in beta, offers an open, online, interactive resource in a number of introductory CS topics.
    • Programming Languages

      • Paul Meek Library ebooks in a variety of programming languages. [Requires UT Martin Credentials.]
  • Programming Languages

    • C

      • C Standard Documents

        • C11- (Draft) Language Specification.

        • C99- (Draft) Language Specification.

    • C++

    • Graphviz

    • LaTeX

      • LaTeX is a markup language used for typesetting documents (books, reports, articles, etc.). It is an industry standard. Most scientific research articles (and probably many of your textbooks) in Computer Science are written in LaTeX.
      • Typesetters and Front-Ends

        • MacTeX - A TeX redistribution for OS X (includes the TeXShop front-end).
        • TeXShop - A LaTeX front-end for OS X (requires a TeX distribution).
      • Code Examples

        • sample_homework.tex - A simple numbered homework assignment that shows a few examples related to discrete math. Also, the resulting pdf file.
          • Note: The above example also demonstrates the inclusion of an external graphic. This diagram will be needed in the same directory as your LaTeX source in order for the example to correctly typeset with pdflatex (or you need to comment out the includegraphics command around line 65).
    • Prolog

  • Programming Practice

    • coderbyte.com - Programming challenges/competitions in multiple languages.

    • Kattis - Programming exercises in the style of the ACM-ICPC submission system.

    • Project Euler - Math-based programming exercises (each exercise increasing in difficulty).

    • Rosalind - Programming exercises with a Bioinformatics theme. Learn about Bioinformatics tools and algorithms as you go.

  • Theory

  • Tutorials

  • Utilities

    • Debugging

    • Linux Terminal

      • Terminal Basics - Enough commands to get you started on the Unix terminal.
    • Text Editors

      • Emacs quick reference - A powerful text editor with many advanced features. Emacs is available for both command line and as a stand-alone GUI application for all of the most popular systems.

      • .emacs file (sample) for CS1.

      • Vim quick reference - Another text editor for advanced users.

        *Note: You may use Vim if you want, however everything I know about Vim is in included in this document, so I will be unable to provide Vim support if you need it.

      • Nano Documentation - A simple, lightweight editor for those who would prefer to avoid the complication and steep learning curve of Emacs or Vim. The most common commands are even listed on the screen while you edit.

        *Note: You are probably using nano, even if you believe you are using pico. Nano is the open source version of the Pico editor, and "pico" is aliased to nano on many OS distributions.
    • Version Control

      • Git - Enough Git to get started using version control. (Note: You will probably want to register for a bitbucket.com or github.com account first.)

    • Windows

      • Utilities for Unix Development

        • Putty - A program that allows you to log into a Linux machine from a Windows machine using ssh.

        • WinSCP - Windows Secure CoPy. - A program that allows you to transfer files between Windows and Linux machines.