CS 251: Computing Laboratory - I

Units: 0-0-3-3
Pre-requisites: ESC101

Course Contents:

  1. Basic operating system commands. Students are expected to know the basic shell (e.g., bash) commands and should be able to understand the options and functioning of a command by reading the man and info pages.
  2. Editors. Again, students are expected to be familiar with at least one of the two editors vim and emacs. However, they should be able to utilize the multiple features of the editors (such as automatic indentation, context-sensitive colouring, letype-sensitive auto-wrap, etc.) and not use them simply as a typewriter.
  3. Version control. Students will need to completely know how at least one of the version control systems (e.g., cvs, svn, git, darcs) work. They should be able to check in, check out, resolve errors and put tags on a snapshot. On all subsequent assignments, they must use a form of version control.
  4. Scripting and automation. Of the various types of shells (bash, csh, tcsh, ksh), the preferred choice is bash, although students should be familiar with the different command syntax in other shells as well. Also, they will need to know the various functions (e.g., seq, for) that a shell provides. The choice of the scripting language (perl or python) is open to students.
  5. Document preparation. Students will learn using latex for preparing documents. They should also know how to format properly the equations, gures, tables, theorems, etc. using different packages and options. For bibliography management, they should use bibtex, and must use it within the latex documents. For drawing figures and graphs, they can choose to learn some or all of the different softwares used popularly (they include gnuplot, xfig, etc.).
  6. Hardware. Students will work hands-on to learn how to install hard drives, RAM, etc., and in general, assemble a computer from its different parts.
  7. Web applications. Students will need to know the different web languages (html, xml) that are used along with the scripting languages (php, javascript), forms and database tools (MySQL) that are necessary for setting up a website. Students should be able to setup a wiki site as well.
  8. Useful Application Software. Students should learn to effectively use various softwares that serve a whole range of applications. These include the general purpose octave or scilab, the more statistically oriented R and the image manipulator gimp.
  9. Operating system installation and packages Students can choose a particular distribution of Linux (e.g., Fedora, Debian, Ubuntu, etc.) and learn installing the basic operating system and different packages. They should also learn how to congure options globally (including booting) and for particular users only. They will further understand how to debug problems using the log and error les.

Books and References:

  1. Manuals.
  2. On-line help that is available for different tools.