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
nano
command-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