Graduate Software Lab Planning Notes
AS, DMD, RKJ, SB, Siva, Soumen, Sudarshan
We will keep adding links to relevant sites for downloads and documentation.
We would appreciate comments and feedback; please send email to soumen.
The list is roughly in order of generic to specific skills. By Windows
we usually mean Windows NT workstation version 4.
Course description
The purpose of this course is to impart broad training in tools and methodology
to make students proficient in the processes and practices involved in
courses, projects, research, and publication. Tools include email
and news readers, editors, web browsers, and software for scientific typesetting,
web publishing, slide preparation, etc. Students will be made familiar
with UNIX (Linux) and Windows platforms, including minor administration,
shell tools, and simple scripting. Project development involves familiarity
with programming environments and languages, version control, software
reuse and familiarity with standard libraries. Additionally, students
will get early exposure to network and database protocols, including simple
UNIX network utilities, web-based protocols, and basic SQL client-server
programming.
Proposed syllabus
Familiarity with tools
-
Email readers: pine (UNIX) and Netscape Messenger (UNIX/Windows)
-
News readers: tin (UNIX) and Netscape Messenger (UNIX/Windows)
-
Web browsers: Netscape and Internet Explorer
-
Security issues in browsing untrusted sites: active pages, cookies
-
Text editors: vim (UNIX) and Gnu Emacs (UNIX/Windows)
-
HTML editor: Netscape Composer (UNIX/Windows) --- build your homepage and
a resume in HTML
-
LaTeX and PDF-LaTeX --- compose a document with math, diagrams, citations,
index and appendices
-
Spreadsheet skills using Excel (Windows) --- design a spreadsheet to maintain
expense account
-
Preparing talk slides using PowerPoint (Windows) --- with diagrams, math
-
Mounting a UNIX file system on a Windows machine
-
Familiarization with UNIX shells --- bash, tcsh/csh, sh
-
Authentication and secure shells
-
Using UNIX tools --- tar, gzip, split, lpr, find
-
Perl scripting experience --- regular expressions, file and directory operations
System maintenance skills
-
Installing software on Linux (RPM) and Windows
-
Maintain logs, cron jobs, user accounts
-
Storage maintenance: disk quotas, disk volumes, backups
-
Emergency recovery procedure for Windows
Project development skills
-
Version control using CVS
(UNIX/Windows)
-
Compiling, linking, makefiles, makefile generators, dependency checkers
-
UNIX tools --- diff, patch
-
Linking and libraries, shared / dynamically loaded libraries (.so in UNIX,
.dll in Windows)
-
Visual environments --- Visual C++/J++ or Visual Age for Java
-
Debugging and tracing in visual environments (Windows)
-
Object-oriented programming using Java: interfaces, abstract classes, inner
classes, exceptions
-
Reusing standard data structures in Java (java.util) and C++ (Standard
Template Library)
-
Scanners --- flex (C/C++), JFlex
(Java)
-
Parsers --- bison (C)
-
User interface design using Visual J++, Java AWT and Java Foundation Classes
(Swing)
Network related skills
-
User level primer of TCP/IP
-
Basic knowledge of TCP/IP based client-server utilities --- telnet, rlogin,
ftp, DNS, SMTP, NNTP, inetd
-
Web protocols and languages: HTTP and HTTPClient, CGI, HTML, forms, cookies
-
Maintaining a small web site
-
Writing forms and CGI scripts
-
Primer to how web servers, proxies, firewalls, and the Internet work
-
Writing applets, limitations of applet privileges and applet authentication
Database related skills
-
Basic SQL primer --- create databases, tables, indices, and queries
-
Client-server database programs using JDBC (Java) and ODBC (C/C++)
-
(Key, value) pair storage and retrieval using a disk hashtable package
such as Berkeley DB