Resources
This page contains links to third-party resources that you may find helpful. If you have suggestions for other resources that your fellow students may find helpful, please let me know.
Installing a C Compiler
GNU/Linux is the preferred operating system for this class. The GNU C compiler is an integral part of a GNU/Linux operating system and is easy to install and use in such an environment. Our lab runs a specific GNU/Linux distribution called Mint. If you do not already have access to a C compiler on your personal computer, you may wish to set one up using one of the following options depending on your operating system:
- Ubuntu or Mint Linux (or any other Debian-based distribution): Run
"
sudo apt-get install build-essential" in a terminal as an admin user. - Fedora or other RPM-based distribution: Run "
yum groupinstall "Development tools"" in a terminal as an admin user. - Mac OS X: You will need to install the Xcode Command Line Tools package. Here is one guide.
 - Native Windows: You have two main options, Cygwin or MinGW. The former is a larger system that includes a variety of tools to create a development environment similar to Linux on Windows. The later is a smaller system that focuses more closely on providing compilers.
 - Any platform: You can use VirtualBox to create a virtual machine on your system that runs GNU/Linux. Here is a tutorial; you should also consider attending the Unix Users' Group tutorial at 7:00pm on Wednesday, September 2, in ISAT/CS 259.
 - SSH server: You can develop C programs on 
stu.cs.jmu.edu(a departmental server) oreduc.jmu.edu(a university server). You will need an SSH client (the "ssh" command-line utility is installed by default in GNU/Linux or Mac OS X; try PuTTY on Windows). To access Educ, you'll first need to request an account. If you are a CS student, you should already have an account on stu. 
Learning C
- C Language Tutorial - Basic tutorial from Drexel University
 - C Tutorial - Another basic tutorial
 - Learn C The Hard Way - Yet another (rather humorous) tutorial
 - ideone.com - Web-based online compiler and IDE (make sure you choose "C" as your language!)
 
Generic Makefiles
- ISAT250/Ubuntu/Mint Linux
 - Mac OS X w/ MacPorts or manual check build
 - Mac OS X w/ Homebrew
 - Windows w/ Cygwin
 - Miscellaneous (may require tweaking)
 
References
- Programming in C - C language (also covers threads and other systems topics)
 - C Turtle Library - The turtle graphics library we will use in this course
 - printf reference - Standard formatted output routine
 - string reference - Standard string processing routines
 - Nano tutorial - Tutorial for the 
nanocommand-line text editor 
Theory/Math References
- "The Running Time of Programs" - Online textbook chapter on algorithm analysis from Stanford
 - "Mathematics for Computer Science" - Online mathematics textbook
 
LaTeX
- LaTeX-Project.org - LaTeX home page
 - ShareLaTeX - Web-based LaTeX collaborative editor
 - Texmaker - Cross-platform LaTeX editor
 - Lyx - Graphical semi-WYSIWYG LaTeX editor
 
Miscellaneous
- Big-O Cheat Sheet - List of Big-O times for many common structures and algorithms
 - VisuAlgo - Interactive visualizations of data structures and algorithms
 - OpenClipArt - Public domain images (clipart on this website comes from here)
 - Wolfram Alpha - General purpose mathematical engine