meta data for this page

Cut-paste from:

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

Current issues:

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

Proposed syllabus

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-8,9 Python

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.