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.
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 |
---|---|---|