Course Syllabus

Syllabus

 

Making the most of it

Following the numerical sequence of training camps and the numerical sequence of tasks therein is strongly encouraged. Each task usually tends to build upon results from a previous task. Each training camp should take about two hours to complete (including time for taking handwritten notes). All ten of them together, for all intents and purposes, could be treated as a 1-credit course. The material is subject to change based on feedback from students (past and current), faculty, staff, academic and industrial collaborators, technological trends and accepted/expected standards. 

 

Seeking help

Keeping detailed handwritten notes is a very good habit to cultivate/maintain. It can save time and frustration when things go wrong. Saving meaningfully named electronic screenshots of the Terminal is another very useful habit. Notes should include the date and time, location (building, floor and room #) and the hostname of the workstation being used. External help could be limited in their absence.

Clicking the True (or Yes) button at the end of each task without actually completing it is an act of academic dishonesty and will be reported as such to the Office of Academic and Community Conduct.

Feel free to contact Dr. Gowtham (g@mtu.edu) and schedule a meeting if/when in need of help. He'd be happy to work with you as you work through these Training Camps. Including FOSS 101: and a brief description of the issue/problem in the subject line of such emails will expedite time to resolution. It is valuable to note that Dr. Gowtham's responses outside of our University's normal business hours may be slower. Continuing ahead without resolving an issue in any one task/module, however trivial it might be, will likely lead to many more issues in subsequent tasks/modules and making it more difficult to problem-solve. Depending on the complications of such a scenario resulting from compounding issues/errors, a particular module (or worse, the entire course) may have to be restarted.

Feedback continues to show that the exposure and experience gained in FOSS101 helps designing efficient computational workflows and in turn, improve research productivity during (and/or beyond) one's stay at Michigan Tech.

 

Seeking help 

 

Training Camp #01

Task #01 Changing the default shell to /bin/bash
Task #02    The mighty Terminal
Task #03 Basic commands
Task #04 Reference manual for commands
Task #05 Navigating the file system
Task #06 Username and groups
Task #07 Permissions and ownerships
Task #08 Variables
Task #09 Setting up SSH keys
Task #10 Command history

 

Training Camp #02

Task #01 Introduction to Revision Control System and GitHub.com
Task #02    Git - update the profile
Task #03 Git - add SSH key
Task #04 Git - establish local identity
Task #05 Git - cloning a repository
Task #06 Git - making and committing changes
Task #07 Git - permanently deleting entities
Task #08 Git - tagging a commit 
Task #09 Git - viewing commit history
Task #10 Git - advanced concepts

 

Training Camp #03

Task #01 Creating files, folders and symbolic links
Task #02    Finding files, folders and symbolic links
Task #03 Copying and moving files and folders
Task #04 Changing permissions of files and folders
Task #05 Deleting files, folders and symbolic links
Task #06 Adding content to files I & II (output re-direction and HERE-DOC notation)
Task #07 Adding content to files III and IV (gedit and vim)
Task #08 Opening a file in read-only mode
Task #09 Spell check a file
Task #10 Comparing files

 

Training Camp #04

Task #01 Patching a file
Task #02    Integrity of a file
Task #03 Finding strings in a file
Task #04 Text manipulation without opening a file
Task #05 Pattern recognition in a file
Task #06 Combining files
Task #07 Splitting a file
Task #08 Compressing and uncompressing a file
Task #09 Reading a compressed file
Task #10 Creating and managing file archives

 

Training Camp #05

Task #01 Adding (and testing) BASH shortcuts
Task #02 Setting up symbolic links in ${HOME}
Task #03    Adding (and testing) vim shortcuts
Task #04 Output of one command as input for the next
Task #05 Capturing the output of commands with tee
Task #06 Capturing commands and their output with script
Task #07 Taking the Terminal to go
Task #08 Terminal mathematics - (sequence of and random) numbers
Task #09 Terminal mathematics - basic arithmetic and statistics
Task #10 Exit/Return codes

 

Training Camp #06

Task #01 Data visualization
Task #02 gnuplot - basics and a basic plot
Task #03    gnuplot - an improved basic plot
Task #04 gnuplot - partial automation
Task #05 gnuplot - nearly complete-automation
Task #06 gnuplot - complete automation
Task #07 gnuplot - data manipulation on the fly
Task #08 gnuplot - dataset with missing points
Task #09 gnuplot - curve fitting
Task #10 convert - different image formats

 

Training Camp #07

Task #01    LaTeX document preparation system
Task #02 LaTeX - text
Task #03 LaTeX - text and equation (without a cross-reference)
Task #04 LaTeX - text and equations (with a cross-reference)
Task #05 LaTeX - text and table (without a cross-reference)
Task #06 LaTeX - text and tables (with a cross-reference)
Task #07 LaTeX - text and graphic (without a cross-reference)
Task #08 LaTeX - text and graphics (with a cross-reference)
Task #09 LaTeX - text and bibliography
Task #10 LaTeX - modularization

 

Training Camp #08

Task #01 Functions
Task #02 Functions - with arguments
Task #03 Functions - ${HOME}/bin/functions.sh
Task #04 Functions - Hello, World
Task #05 Functions - login counter
Task #06 Functions - input validation
Task #07 Functions - mathematical operations
Task #08 Functions - string operations
Task #09 Functions - seconds in human readable format (hh:mm:ss)
Task #10 Functions - smart extraction

 

Training Camp #09

Task #01    Scripts - Hello, World
Task #02 Scripts - using a local function
Task #03 Scripts - using an external function library
Task #04 Scripts - LaTeX compilation with exit codes
Task #05 Scripts - PDFLaTeX compilation with exit codes
Task #06 Scripts - reading/parsing an input file one line at a time
Task #07 Scripts - data backup
Task #08 Scripts - data restoration
Task #09 Scripts - sophisticated options and arguments
Task #10 Scripts - semi-comprehensive automated workflow

 

Training Camp #10

Task #01    Systems administration (SA)
Task #02 SA - process management and timing things
Task #03 SA - host, ping and traceroute  
Task #04 SA - running things at witching hours
Task #05 SA - facilitating accidental learning
Task #06 Downloading content from the internet
Task #07 Third-party software compilation
Task #08 Accessing a remote workstation
Task #09 Managing SSH keys
Task #10 Final thoughts and digital badging

 

Course Summary:

Date Details Due