1 Content


1.1 Schedule and due dates

1.2 Projects

Project 1: Content/project-1.pdf
Project 2: Content/project-2.pdf

1.3 Topical outline

0a. Introduction and setup
* What is this class?
* Resources, book, website
* SSH/Putty/X-forwarding (old, don’t bother)
* How to submit assignments
* log into https://git-classes.mst.edu/
* VirtualBox pre-setup

0b. Virtual machines
* Reading:
* Content/00-VirtualMachines.html
* Assignment:
* Pre-lab in the book
* Post-lab 00 activity due 24 hours after the start of lab
* From within your new virtual machine, add the answers to the following questions to a text file in your repository for the day (using the Gitlab web interface).
* Without using a GUI:
* What command do you type to update your software?
* What command do you type to search for software to install?
* What command do you type to install that software?
* What are the version numbers of GCC, Code::Blocks, Qt-creator, Kdevelop, Kdbg, GDB, and Valgrind?

1a. Bash basics
* Reading: Content/01-02-LinuxBash.html (first part.html)
* Assignment (download and submit using the Gitlab web interface):
* Pre-lab 02 (from the book) due right before class starts
* Post-lab 02 due 24 hours after the start of class:

1b. Bash scripting
* Reading: Content/01-02-LinuxBash.html (second part.html)
* Assignment (download and submit using the Gitlab web interface):
* Pre-lab 04 (from the book) due right before class starts
* Post-lab 04 due 24 hours after the start of class:

  1. Version Control

3. Unix philosophy and text editors
* Reading:
* Content/tools-for-computer-scientists.pdf Chapter 1, 9, Appendix E
* https://en.wikipedia.org/wiki/Comparison_of_text_editors#Programming_features
* Vim
* http://www.viemu.com/a-why-vi-vim.html
* https://danielmiessler.com/study/vim/
* https://www.reddit.com/r/WatchPeopleVim
* http://vimcasts.org/
* https://devhints.io/vim
* https://learnxinyminutes.com/docs/vim/
* https://openvim.com/
* https://www.vim.so/
* https://vimmer.io/
* https://www.youtube.com/watch?v=GqoJQft5R2E (set -o vi in .bashrc)
* Slides: Content/01_Text_IDE.pdf
* Assignment:
* Pre-lab 01 and 09 (from the book) due before class starts. This is the short worksheet at the end of each chapter.
* Post-lab 01 and 09 due 24 hours after the start of class:
* Post-lab 01 is at the end of the chapter (answer the questions in a text file and place it in the repository).
* Post-lab 09 is in the repository and here: Content/09_IDE-assignment.pdf
* Play several levels of https://vim-adventures.com/ and include a screenshot in your repository
* Play https://www.shortcutfoo.com/ for vim

  1. Build systems (GNU Make)
  2. Debuggers
  3. Code checking
  4. Unit testing
  5. Profiling
  6. Regular expressions
  7. GUI programming - Qt
  8. LaTeX
  9. Modern C++