The schedule and due dates will be updated as we progress through the
semester (on Canvas).
Please check back regularly for changes.
Project 1: Content/project-1.pdf
Project 2: Content/project-2.pdf
What is this class?
List resources, book, website.
How to submit assignments?
Log into: https://git-classes.mst.edu/
VirtualBox pre-setup.
“An apprentice carpenter may want only a hammer and saw,
but a master craftsman employs many precision tools.
Computer programming likewise requires sophisticated tools,
to cope with the complexity of real applications,
and only practice with these tools will build skill in their use.”
~ Robert L. Kruse, Data Structures and Program Design
Reading: Content/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,
in your repository for the day (using the Gitlab web interface),
add the answers to the following questions to a text file.
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?
Reading: Content/LinuxBash.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.
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.
Slides: Content/VersionControl.html
Assignment (clone and submit using the command line Git interface
only!).
Pre-lab 03 (from the book) due right before class starts.
Post-lab 03 due 24 hours after the start of class.
I strongly suggest an efficient, terminal-based file manager.
ranger
is my favorite:
https://ranger.fm/
Though mc
comes in handy too:
http://midnight-commander.org/
The nice part about these is that they are fast, efficient,
easy,
and can be used on remote machines, without GUIs.
Slides: Content/01_Text_IDE.pdf
Reading:
Content/TextEditors.html
Content/tools-for-computer-scientists.pdf
Chapter 1, 9, Appendix E
https://en.wikipedia.org/wiki/Comparison_of_text_editors#Programming_features
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
Diff tools are helpful for comparing two folders of files,
or comparing two of your output files.
Compare your output to any given sample output to make sure they are the
same,
including all newlines and spaces, via bash:
./yourcode.whatever <sample_input.txt >your_output.txt
# or for two-column format (easier to see):
diff -y --color sample_output.txt your_output.txt
# using vim:
nvim -d sample_output.txt your_output.txt
# using git-delta
delta sample_output.txt your_output.txt
# in the Meld GUI:
meld sample_output.txt your_output.txt
Slides: Content/05-build_systems.pdf
Reading:
Content/tools-for-computer-scientists.pdf
Chapter 5
https://makefiletutorial.com/
https://learnxinyminutes.com/docs/make/
https://www.gnu.org/software/make/manual/make.html
https://swcarpentry.github.io/make-novice/
Assignment:
Pre-lab 05 (from the book) due right before class starts.
Post-lab 05 due 24 hours after the start of class.
Reading:
Content/tools-for-computer-scientists.pdf
Chapter 6, 9
Slides: Content/06-debugging.pdf
Notes: in gdb
this prints an array, where len is a
number like 6:
p *array@len
A great gdb configuration:
https://github.com/cyrus-and/gdb-dashboard/
Another worth checking out:
https://wiki.gnome.org/Apps/Nemiver
https://en.wikipedia.org/wiki/Nemiver
Assignment:
Pre-lab 06 (from the book) due right before class starts
Post-lab 06 due 24 hours after the start of class:
Reading: Content/tools-for-computer-scientists.pdf Chapter 7
Slides: Content/07-code_checking.pdf
Assignment:
Pre-lab 07 (from the book) due right before class starts
Post-lab 07 due 24 hours after the start of class.
Reading: Content/tools-for-computer-scientists.pdf Chapter 8
Slides: Content/08-unit_testing.pdf
Assignment:
Pre-lab 08 (from the book) due right before class starts
Post-lab 08 due 24 hours after the start of class:
Reading:
Content/tools-for-computer-scientists.pdf
Chapter 10
https://github.com/KDAB/hotspot
Slides: Content/10-code_profiling.pdf
Assignment:
Pre-lab 10 (from the book) due right before class starts
Post-lab 10 due 24 hours after the start of class:
Reading:
Content/tools-for-computer-scientists.pdf
Chapter 8
http://en.cppreference.com/w/cpp/regex
http://www.cplusplus.com/reference/regex/
http://www.grymoire.com/Unix/Sed.html
http://www.rexegg.com/regex-quickstart.html
https://regex101.com/
https://regexcrossword.com/
https://www.gnu.org/software/grep/manual/grep.html
https://www.gnu.org/software/sed/manual/sed.html
https://www.regexone.com/ (this one is good, I suggest
completing the activity)
https://www.regular-expressions.info/
Slides: Content/11-regular_expressions.pdf
Assignment:
Pre-lab (from the book) due right before class starts
Post-lab due 24 hours after the start of class:
Reading:
Content/tools-for-computer-scientists.pdf
Chapter 8
https://wiki.qt.io/About_Qt
https://www.qt.io/what-is-qt/
https://showroom.qt.io/
https://en.wikipedia.org/wiki/Qt_(software)
https://wiki.qt.io/Basic_Qt_Programming_Tutorial
https://wiki.qt.io/Qt_for_Beginners
http://zetcode.com/gui/qt5/
https://doc.qt.io/qtcreator/
https://www.youtube.com/watch?v=6KtOzh0StTc&list=PL2D1942A4688E9D63&spfreload=10
Slides: Content/12-GUI_programming.pdf
Assignment:
Pre-lab (from the book) due right before class starts
Post-lab due 24 hours after the start of class.
Reading:
Content/tools-for-computer-scientists.pdf
Chapter 13
https://www.latex-tutorial.com/
Slides: Content/13-latex.pdf
Assignment:
Pre-lab (from the book) due right before class starts
Post-lab due 24 hours after the start of class.
Reading:
Content/tools-for-computer-scientists.pdf
Chapter 14
Assignment:
Pre-lab (from the book) due right before class starts
Post-lab due 22 hours after the start of class