meta data for this page
1) CS296 Restructuring
Current syllabus (from ASC):
Introduction to the UNIX operating system (file system and directory structure, and processes). Unix tools (shell programming, grep, tar, compress, sed, find, sort etc). Programming in AWK. Introduction to World Wide Web (html, cgi). Programming Using Java, Graphical User Interface Programming using Java. Socket programming in Java. Programming tools (make, source code control using sccs/rcs, debuggers). Document processing using Latex.
Current LTPC: 2-0-2-6
Many topics require lecturing, but this is not accounted in scheduling
Time spent outside lab for programming assignments is significant, which is not accounted in the credit structure
Suggested sequencing of topics is given below
Week-1 vim/emacs HTML, css Drawing software: e.g. inkscape/xfig/oodraw, latex, beamer
Week-2, 3, 4 IDE (e.g. eclipse, netbeans), code reading, debugging Basic Java Java collections, interfaces Java threads Java GUI Introduction to documentation: e.g. doxygen/javadocs
Week-5, 6, 7 Version management: svn/git Unix basics: shell, file system, permissions, process hierarchy, ssh, rsync Unix tools: e.g. awk, sed, grep, find, head, tail, tar, cut, sort Bash scripting: I/O redirection, pipes
Week-10,11 Makefile, libraries and linking Graph plotting software (e.g. gnuplot)
Week-12 Profiling tools (e.g. gprof, prof)
Week-13 Optional topics (may be specific to individual students' projects): intro to sockets, basic SQL for data storage, JDBC/pygresql
Proposed LTPC structure: 1-3-0-8
Justification: 1 hour of lecture per week (outside of lab hours) is sufficient to explain concepts as required, 3 contact hours of lab, rest of the lab hours will be spent doing programming assignments, reading man pages, documentation, etc as necessary while doing programming assignments. CS296 lab is really like a tutorial, where students are expected to spend time outside the specified lab timing. So in the LTPC structure, it shows up as a tutorial.
Timetable scheduling requirement: 1 hour lecture slot per week + 3 hour lab slot per week
Strong suggestion-1: lecture itself should be in a lab setting; it should be possible to interject lab sessions with short lectures
Strong suggestion-2: a project should be included which touches upon most of the above topics; this will help students see the connect across these seemingly disparate topics. This project can be a free-form project or an instructor-specified project.
Project example-1: Start with a existing code base of a network simulator, use cscope to browse and understand relevant parts, use Makefile to compile and link, use svn/git to manage versions, use bash scripting to run simulator multiple times and generate data, plot the data using gnuplot, insert resultant eps into a latex report.
Project example-2: Start with an existing 2-D rigid body physics simulation library, use doxygen to understand the API, use Makefile to compile and link, use svn/git to manage versions, design own physics simulation of a Rube-Goldberg machine, describe the simulation in HTML/css, draw diagrams using inkscape, run the simulation multiple times using shell scripts, generate profiling data, plot this data using python+gnuplot, discuss a java binding of the same simulation library
Project is also expected to be a significant load: 20-30 hours, with 30-40% weightage.