Skip to content

Introduction #3

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Jan 9, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
70 changes: 66 additions & 4 deletions 00-FrontMatter.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ author: Nathan Jarus and Michael Wisely
institute: Missouri University of Science and Technology

documentclass: book
papersize: letter
papersize: a5paper
colorlinks: true

toc: true
Expand All @@ -16,12 +16,74 @@ header-includes:
- \usepackage{newunicodechar}
- \newunicodechar{↩}{$\color{blue}\scriptstyle\hookleftarrow$}

thanks: |
include-before: |
\pagestyle{empty}
\begingroup
Thanks to those who put up with our nonsense and those who paid us
to write a book that is full of it.
\endgroup

\vfill

\begingroup
The source code for this book is available at [https://github.com/michaelwisely/CS1001-Prelab-Book](https://github.com/michaelwisely/CS1001-Prelab-Book).
We welcome questions, corrections, and improvements.
\endgroup

\vfill

\begingroup
\footnotesize
\parindent 0pt
\parskip \baselineskip
\textcopyright{} 2016--2018 Nathan Jarus and Michael Wisely

\indent
This work is licensed under the Creative Commons Attribution--ShareAlike 4.0 International License.
To view a copy of this license, visit [http://creativecommons.org/licenses/by-sa/4.0/](http://creativecommons.org/licenses/by-sa/4.0/)
or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.

\begin{center}
\begin{tabular}{ll}
Zeroth edition: & August 2017
\end{tabular}
\end{center}

\endgroup
\clearpage
...

\chapter*{Introduction}
\frontmatter
\chapter{Introduction}

The field of Computer Science is an odd amalgamation of math, logic, statistics, philosophy, electrical engineering, psychology, and systems engineering.
Some of your classes will be hands-on and easily applicable; others will focus on ideas and theory, leaving the application in your hands.

Throughought your career as a computer scientist, computer engineer, or software engineer, you will write a lot of software.
This book focuses on software tools that will be useful in classes, internships, and personal projects.
Much as chemistry students are taught how to use lab equipment and mechanical engineering students learn the basics of machining,
this book teaches the basics of tools for writing and debugging software.

Each chapter of this book could be a book in itself --- our goal here is to give you an idea of what these tools are useful for
so that you'll know where to look when you need them in the future.
We've included links to more information on the book's topics at the end of each chapter, as well as a quick reference on how to use each tool.

To get the most out of this book, you must do more than just read each chapter.
As you read, try out the examples in the chapter.
Once you get an example working, take it a step further --- try something that seems like it might work, or combine it with something you learned previously!
Your learning does not end when you finish this book either.
Keep using the tools we present; practice will improve both how quickly you can accomplish tasks and your understanding of how
the tools, and by extension computers and software, work.

A note on the copyright license of this book: copyright laws are typically used to restrict the rights of others to copy, modify, and distribute creative works.
This book is distributed under what's known as a 'copyleft' license --- rather than restricting your rights, it ensures that you retain these rights.
The [Creative Commons Attribution--Share Alike (CC BY-SA)](http://creativecommons.org/licenses/by-sa/4.0/) license states that you have the right to copy, modify, and distribute your modifications to this book
as you please so long as you follow two rules:

1. You have to credit the authors of the work and indicate if you have made any changes.
2. You have to distribute your changes under the same license, giving others the same rights to your modifications as you (and they) have to the original work.

We hope that learning the tools in this book make your life easier and that you have a little fun along the way.
Happy hacking!

Well?
\mainmatter
2 changes: 2 additions & 0 deletions 01-Exploring-Text-Editors.md
Original file line number Diff line number Diff line change
Expand Up @@ -521,11 +521,13 @@ Granted, that requires... 13?... More keystrokes than `C-f`, but by golly, you c

`M-x` is *very* useful for invoking commands that don't actually have keybindings.

<!-- copyright
\begin{figure}
\centering
\includegraphics[height=0.3\textheight]{01/mxdonuts}
\caption{Emacs has commands for all kinds of things!}
\end{figure}
-->

#### Moving Around

Expand Down
Binary file removed 01/mxdonuts.jpg
Binary file not shown.
4 changes: 4 additions & 0 deletions 02-Bash-Basics.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@
What is a shell?
A shell is a hard outer layer of a marine animal, found on beaches.

<!--
Licensed under CC0
source: https://pixabay.com/es/mar-shell-almeja-oc%C3%A9ano-1162744/
-->
![A shell.](02/shell.png)

Now that that's cleared up, on to some cool shell facts.
Expand Down
2 changes: 0 additions & 2 deletions 03-Git-Basics.md
Original file line number Diff line number Diff line change
Expand Up @@ -356,8 +356,6 @@ As you code, you see a beautiful person emerge[^emerge] from the field's tall gr

You grimace.

![Grimace](03/grimace.png)

The muse proceeds to explain in great detail how your program can be so much better than it is.
You agree.
This is a muse after all.
Expand Down
Binary file removed 03/grimace.png
Binary file not shown.
2 changes: 0 additions & 2 deletions 06-Integrated-Development-Environments.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,6 @@ Despite their modern appearance and ergonomic appeal, some people don't much car
Truly, it is a mind-bending reality that some people would prefer to use a mouse to click *buttons* rather than typing commands in a shell.
What a world!

![Ain't that just the way?](06/greg.jpg){ width=60% }

In our first lab, we tried a number of different text editors.
A couple of those (including Atom and Notepad++) included **graphical user interfaces** (GUIs).
This means you're free to use your mouse to select text, move text, scroll through text, choose menu action, click buttons, et cetera.
Expand Down
Binary file removed 06/greg.jpg
Binary file not shown.
2 changes: 2 additions & 0 deletions 07-Building-with-Make.md
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,9 @@ When the linker arrives, it paws through your object files, eats all the cookies
and then through a terrifying process not entirely understood by humans[^exaggerating],
leaves you a beautiful executable wrapped up under your tree[^lovecraft].

<!-- copyright
![How Executables are Made](07/compile.png){width=70%}
-->

So, what's the big deal?
Well, if you compile your code to object files and then change some of your code, you only need to rebuild the object files
Expand Down
Binary file removed 07/compile.gif
Binary file not shown.
Binary file removed 07/compile.png
Binary file not shown.
2 changes: 0 additions & 2 deletions 08-Debugging-with-GDB.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,6 @@ Maybe take some extra time on a test.
Steal a quick bagel for breakfast.
Rob a bank[^escalation]...

![When you can slow down time, taking candy from a baby is like taking candy from a baby.](08/candy.jpg){ width=80% }

It was all fun up to this point.
But now you're here: standing in front of at an array of red-hot lasers, trapped in the vault of the Big Bank of New York, wondering where it all went wrong, and wearing a fancy turtle neck.
At least you look good in a turtle neck.
Expand Down
Binary file removed 08/candy.jpg
Binary file not shown.
5 changes: 5 additions & 0 deletions 09-Locating-memory-leaks-with-Memcheck.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,11 @@ For one example, the [WannaCry](https://en.wikipedia.org/wiki/WannaCry_ransomwar
viruses use a memory safety exploit called [EternalBlue](https://www.rapid7.com/db/modules/exploit/windows/smb/ms17_010_eternalblue) "allegedly" developed
by the NSA and released by "Russian" hackers early in 2017.

<!--
Image is in the public domain.
source: https://commons.wikimedia.org/wiki/File:Smokey3.jpg
-->

![Smokey Says: "Only You Can Prevent Ransomware"](09/Smokey3.jpg){height=35%}

### Takeaways
Expand Down
6 changes: 5 additions & 1 deletion 14-Typesetting-with-LaTeX.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,11 @@

Close your eyes. You are [Donald Knuth](http://www-cs-faculty.stanford.edu/~uno/).

![You, aka Donald Knuth](14/don.png)
<!--
Licensed CC-BY-SA 2.5; taken by Jacob Appelbaum (ick)
source: https://upload.wikimedia.org/wikipedia/commons/4/4f/KnuthAtOpenContentAlliance.jpg
-->
![You, aka Donald Knuth](14/don.jpg){height=35%}

The year is 1977, and you have just finished hand-writing the final draft of the second edition of the second volume of *The Art of Computer Programming*.
You send the draft off to the publisher for typesetting, and the proof that comes back is just horrendous.
Expand Down
Binary file removed 14/don.png
Binary file not shown.
Loading