.. include:: ../shared/organizationHeader.rst
.. include:: ../shared/courseOutline.rst


* Preparing your computer--or a remote one--for studies: OS X Terminal, Windows Subsystem for Linux, or Ubuntu Linux running natively. Make the terminal/command line a part of your life in CS! 

* Text editing with vim. We choose one text editor for pedagogical reasons. Vim is also installed on every modern Unix system by default. Emacs often has to be installed from the package manager. We will make students aware of alternatives: Emacs, Nano, Visual Studio Code, and Atom. 

* Writing tools, e.g. LaTeX/Overleaf, Markdown, and Google Docs 

* Filesystem: files, directories, user/group permissions (chmod, chown), file and directory manipulation (cp, mv, rm, cat, mkdir, cd, ln, etc.) 

* Mastering time-saving idioms, e.g. find . -name ‘\*.c’, mkdir -p x/y/z, etc. 

* Processes: running programs, foreground, background, I/O redirection, pipelines (map/reduce thinking, filtering), job control (ps, kill, killall, etc.), stream commands (cat, grep, head, tail, tee), examining system logs 

* Command-line options, arguments, etc. 

* Environmental Considerations: environment variables, PATH, Prompt customization using ZSH and Oh-My-ZSH 

* Sysadmin Rudiments: installation in a VM, sudo instead of root, package management, adding/removing users, etc., package managers 

* Working with Storage Media / Services 

* Network Tools (examining network configuration, file transferring, wget, curl, ssh, nmap, ufw, etc.) 

* Archiving (tar, zip, gzip, etc.) 

* Regular Expressions 

* Text Processing (cat, sort, uniq, cut, paste, join, diff, comm, sed, tr, aspell, HTML and XML tools. 

* Output/Writing: fold, fmt, pr, printf, groff, pandoc 

* Compiling programs in C and Java; Interpreters and Python 

* Version control and Git; hosted version control solutions: GitHub (primary), Bitbucket, and GitLab. 

* Remote access with SSH and using the university VPN. 

* Setting up and using a virtual machine (VirtualBox) 

* Shell scripting 

.. include:: ../shared/groundRules.rst



Textbook
++++++++
William Shotts's *The Unix Command Line*, available at no-cost under a Creative Commons license `from the website <https://linuxcommand.org/tlcl.php>`_


Grading scheme
++++++++++++++

Course performance is determined using in-class assignments, weekly homework, a take-home midterm, and a take-home final. Each assessment component carries a 25% weight. Grading scheme aside, the objective of assessments in this course is to ensure **that students are learning.** In this context students make mistakes, understand them, and do not repeat them.

.. include:: ../shared/deadlines.rst
.. include:: ../shared/inClassAssignments.rst


Exam dates
++++++++++
The final exam will be a take-home assignment. It will become available at 4:15 PM on 4/20/20 and due at 6:15 PM on Monday 4/27/20 (subject to change).

The midterm exam will be a take-home assignment. It will become available on Sakai at 5 PM on 2/21/20 and due at 5 PM on Friday 4/28/20 (subject to change).


.. include:: ../shared/studentHours.rst
.. include:: ../shared/academicIntegrity.rst
.. include:: ../shared/professionalism.rst
.. include:: ../shared/zoom.rst
.. include:: ../shared/formalStuff.rst
.. include:: ../shared/DEI_statement.rst
