Announcementes

Welcome to the course!

Remember,

  • Practice, practice, practice.

  • Learn the tool so that it works for you, and not the other way around!

  • If something feels slow and repetetive, there is a better way to do it.

  • When possible, be lazy and efficient.

  • Read The Friendly Manual.

Course Info

This course builds on the set of software tools used to support programmers that is first presented in CPSC 021. Students will learn how to efficiently use a terminal emulator and other utilities to support development of programs, as well as become self-sufficient in seeking out additional documentation and resources. Topics include managing directory structures, practice with common Linux utilities, and practice searching and reading technical documentation. Become a Linux power user!

Course Meeting Times

Wednesdays, 1:05 PM - 2:35 PM, Martin 313

Office Hours

Mondays, 1:00 PM - 3:00 PM, Martin 330

Schedule

WEEK DAY ANNOUNCEMENTS TOPIC & READING LABS
1

Jan 21

 

Intro, Navigation

  • Syllabus Overview
  • History of the Terminal
  • Naviagation and File Management
  • Handy Shortcuts
    Using Linux

treenav


Navigation in Bash

2

Jan 28

Drop/Add Ends

Text Editing

vimtutor
treenav

3

Feb 04

 

Remote Connections, Documentation

using scp
summarizing the summaries

4

Feb 11

 

Configuration

  • less
  • vim modification and plugins
  • bashrc modification
  • apt

nvim customization

5

Feb 18

 

Standard Streams

  • stdin, stdout, stderr
  • redirection and piping

plumbing with bash

6

Feb 25

 

tmux, grep

  • persistent sessions with tmux
  • wildcard expansion
  • introduction to grep

planning a pub crawl

7

Mar 04

 

Regular Expressions

  • regular expression syntax
  • grep with regular expressions

regex practice

 

Mar 11

Spring Break

8

Mar 18

 

Permissions, Makefiles

  • symlinks
  • rwx permissions, users and groups
  • chmod
  • overview of build management
  • make and Makefiles

personal webpage
Makefile development

9

Mar 25

 

Process Monitoring

  • intro to processes
  • foreground/background processes
  • ps, htop
  • kill, pkill, killall

tbd

10

Apr 01

 

Bash Scripts

  • basic bash syntax
  • bash scripts
11

Apr 08

 

tbd

12

Apr 15

 

Step Debugging

  • step debugging overview
  • gdb basics

debug a blackbox

13

Apr 22

 

git

  • source control overview
  • git branching, tagging, merging, forking

tbd

14

Apr 29

 

Potpourri

  • environment variables
  • diff
  • at, cron
  • compression with tar, gzip
  • complex package managers (apt, pip)

Grading Policy

This document outlines the grading policies for CS 14 and describes how they map to course grades. The purpose of this grading scheme is to ensure faculty and students alike focus on learning and practicing the course content, as opposed to worrying about grades and percentages. One of the main considerations in developing this scheme was to ensure that students have opportunities to receive feedback and resubmit improved work when possible.

Your final grade will be determined by a combination of:

  • The total number of weekly exercises you submit with evidence of using allowed tools, verified via submitting an asciinema recording. These are graded as complete/not yet based on the submitted file(s) and asciinema recording.

  • Your average lab completion across all lab assignments. Each lab assignment will be evaluated for completion based on about 4-8 requirements that describe how a solution should behave and any artifacts it must produce. To earn credit for meeting a requirement, your lab solution must fully meet the requirement.

  • The total number of reflections on lab assignments you submit. Each lab assignment will have a post-assignment written reflection where you write down your process, including what tools you used and how you used them. These are graded as complete/not yet based good-faith effort.

Table 1. CS 14 Grade Requirements
Grade Navigation Exercises vim Exercises Average Lab Completion Reflections

A

12

12

90%

10

A-

11

11

85%

10

B+

11

11

80%

9

B

10

10

80%

9

B-

10

10

75%

9

C+

9

9

70%

8

C

9

9

70%

8

C-

8

8

65%

8

D+

8

8

60%

7

D

7

7

60%

6

D-

7

7

55%

5

Assignment Policies

This course features both weekly exercises and weekly lab assignments. Both will typically be released on Wednesday during or after the course lecture section and will be due by the following Tuesday at 11:59 PM Eastern, unless otherwise noted. Depending on the particular assignment, submissions will be collected either via a git repo or by placing the necessary files in a designated directory on the CS network. Only the most recent submission by the deadline will be considered.

Exercises must be submitted with one or more accompanying asciinema recordings of you completing the exercise to be counted for credit.

Late Policy

Late submissions for exercises will not be accepted under normal circumstances.

For lab assignments all students start the course with two late assignment days to be used at your discretion, with no questions asked. To use your extra time, you must email the instructor after you have completed the lab and submitted your file(s). You do not need to inform anyone ahead of time. When you use late time, you should still expect to work on the newly-released lab the following week.

Your late days for lab assignments will be counted at the granularity of full days. That is, if you turn in an assignment five minutes after the deadline, it counts as using one day.

If you feel that you need an extension on an assignment or that you are unable to attend class for two or more meetings due to a medical condition (e.g., extended illness, concussion, hospitalization) or other emergency, you must contact the dean’s office and your instructors. Faculty will coordinate with the deans to determine and provide the appropriate accommodations. Note that for illnesses, the College’s medical excuse policy states that you must be seen and diagnosed by the Worth Health Center if you would like them to contact your class dean with corroborating medical information.

Re-submission Policy

If you receive a "not yet" on an exercise or lab reflection, or a grade lower than you would have liked on a lab assignment, you will have an opportunity to revise and resubmit your work. For any exercise, lab, or lab reflection you may submit a revised version of the work within one week of receiving feedback. When you submit a revision, you must notify the instructor by email. If you do not submit the revision within one week, the opportunity for a re-grade is lost. In the case of a lab assignment, you must also update the reflection with details about what you changed and why. The highest score between the original submission and the re-submission will be used to determine your final grade.

You may not use this policy as "additional late days". Re-submissions will only be accepted for work where every part has been attempted at least once. Abuses of this policy may result in its revocation.

Academic Integrity

Academic honesty is required in all your work. Under no circumstances may you hand in work done with or by someone else under your own name. Discussing ideas and approaches to problems with others on a general level is encouraged, but you should never share your solutions with anyone else nor allow others to share solutions with you. You may not examine solutions belonging to someone else, nor may you let anyone else look at or make a copy of your solutions. This includes, but is not limited to, obtaining solutions from students who previously took the course or solutions that can be found online. The use of generative AI (e.g., chatGPT or GitHub CoPilot) is also considered to be unauthorized collaboration with an outside source and is a violation of our academic integrity policy.

You may not share information about your solution in such a manner that a student could reconstruct your solution in a meaningful way (such as by dictation, providing a detailed outline, or discussing specific aspects of the solution). You may not share your solutions even after the due date of the assignment.

In your solutions, you are permitted to include material which was distributed in class and material that is disseminated through the course website. In these cases, you should always include detailed comments indicating on which parts of the assignment you received help and what your sources were.

When working on quizzes, exams, or similar assessments, you are not permitted to communicate with anyone about the exam during the entire examination period (even if you have already submitted your work). You are not permitted to use any resources to complete the exam other than those explicitly permitted by course policy. (For instance, you may not look at the course website during the exam unless explicitly permitted by the instructor when the exam is distributed.)

Failure to abide by these rules constitutes academic dishonesty and will lead to a hearing of the College Judiciary Committee. According to the Faculty Handbook:

Because plagiarism is considered to be so serious a transgression, it is the opinion of the faculty that for the first offense, failure in the course and, as appropriate, suspension for a semester or deprivation of the degree in that year is suitable; for a second offense, the penalty should normally be expulsion.

This policy applies to all course work, including but not limited to code, written solutions (e.g. proofs, analyses, reports, etc.), exams, and so on. This is not meant to be an enumeration of all possible violations; students are responsible for seeking clarification if there is any doubt about the level of permissible communication.

The general ethos of this policy is that actions which shortcut the learning process are forbidden while actions which promote learning are encouraged. Studying lecture materials together, for example, provides an additional avenue for learning and is encouraged. Using a classmate’s solution, however, is prohibited because it avoids the learning process entirely. If you have any questions about what is or is not permissible, please contact your instructor.

Regret clause for lab assignments

If you commit some act that is a violation of the integrity policy (or, if you are unsure if it violates the policy) but bring it to the attention of the course’s instructors within 48 hours, the course may impose local sanctions that may include an unsatisfactory or failing grade for work submitted, but the course will not refer the matter for further disciplinary action except in cases of repeated acts. The regret clause applies to lab assignments only.

Academic Accommodations

If you believe you need accommodations for a disability or a chronic medical condition, please visit the Student Disability Services website for details about the accommodations process. Since accommodations require early planning and are not retroactive, contact Student Disability Services as soon as possible. You are also welcome to contact a member of the course staff privately to discuss your academic needs. However, all disability-related accommodations must be arranged, in advance, through Student Disability Services.

For details about the accommodations process, visit the Student Disability Services website.

To receive an accommodation for a course activity, you must have an official accommodation letter from the Office of Student Disability Services and you need to meet with course staff to work out the details of your accommodation at least two weeks prior to the activity.

Resources