CS252, Spring 2024

CS252 Outline

Spring 2024

Below are the modules that comprise the course content.

Each module includes a mixture of lecture notes for you to read (required) and relevant textbook chapters (optional). Many of the lecture notes include “Try This” activities for you to perform while logged in to one of our Linux servers.

Most modules include at least one assignment that you should attempt to complete before moving on.

KEYS TO SUCCESS IN THIS COURSE:

  1. READ THE SYLLABUS

    The syllabus lays out the basic course policies. It tells you what you need to do to earn a passing grade. It tells you when you need to have done that by. It tells you how to get in touch with me if you run into problems.

  2. HAVE A SCHEDULE

    You have the freedom to schedule your own time in this course, but you DO need to set up a schedule. Don’t forget that this course exists and that you are registered for it. Don’t think you can repeatedly set it aside for weeks at a time and make up the time later.

    • There are 14 assignments in the course.
    • There are approximately 14 weeks in a Fall or Spring semester (12 in summer).
    • You can easily figure out what kind of pace you should be setting if you want to complete this course.
  3. IF YOU DON"T UNDERSTAND SOMETHING, ASK QUESTIONS

    In a web course, my role as Instructor changes from “lecturer” to “tutor”. You can ask questions in the course Forums. You can send me email. You can also contact me during office hours. You’ll find more information on these options in the syllabus and other documents on the Course Policies page.

    Some people are too shy to ask questions. Some are too proud to ask questions. My advice to both groups is to get over it! Part of being educated is knowing how to exploit your available information resources. In this course, I am one of those resources.

  4. READ THE LECTURE NOTES. DO THE “TRY THIS” EXERCISES.

    As a general rule, everything you need to complete the assignments and final exam are contained in the lecture notes and are things that you will practice with in the “Try This” exercises.

    The listed textbook readings are optional. Hunting the internet for additional info is possible, but can often lead to more confusion than enlightenment, so you do that at your own risk.

    When you read, read attentively. When you do the Try This exercises, be observant to the results you are getting and make sure that you understand them.

    • If you consistently find yourself starting the assignments thinking that you are prepared, then get stuck with no idea how to proceed, that’s a good sign that you were not really giving the lecture notes or Try This exercises enough attention.
1 Getting Started

Objectives

Upon completing this section, a student should…

  • Be familiar with the course layout and policies.
  • Understand the differences between
    • local and remote command sessions
    • text-mode and graphics mode sessions
  • Have set up a CS network account.
  • Be able to log in to a remote text-mode session on the CS Dept Linux machines.
Activities
  1. lecture Read: Welcome to CS 252
  2. lecture Read: CS 252 Syllabus - Spring 2024
  3. slides Read: Communications
  4. lecture Read lecture notes: Why Unix?
  5. lab Do: Unix account setup
  6. reading Read (optional): Peek: Preface, Ch 1
  7. lecture Read lecture notes: Working from a Command Line

  8. lecture Read lecture notes: Networks and Protocols
  9. lecture Read lecture notes: Logging In to Remote Linux Machines
  10. asst Do assignment: Asst 1: Logging In

2 Command Line Interface (CLI) – basics
2.1 Files and Directories

Objectives

Upon completing this section, a student should…

  • Understand the hierarchical structure of a typical file system.
  • Understand how paths identify the location of a file.
  • Recognize the various ways to name their own home directory and those of other account holders.
  • Understand the difference between relative and absolute paths.
  • Write both absolute and relative paths to a desired file.
  • Be able to issue basic commands for creating and listing directories, copying, moving, and viewing the contents of files.
Activities
  1. lecture Read lecture notes: The Unix File System
  2. lecture Read lecture notes: Basic File Manipulation
  3. reading Read (optional): Peek: Ch 3
  4. reading Read (optional): Taylor, ch 3, 4, 6
  5. asst Do assignment: Asst 2: Files and Directories

  6. lecture Read lecture notes: Getting Help

2.2 The Elements of Unix Commands

Objectives

Upon completing this section, a student should be able to…

  • Understand the common special characters available in the command shell.
  • Use special characters to speed up and simplify the typing of commands.
  • Use the three forms of quoting (single quotes, double quotes, and backslashes) to suppress special character actions.
  • Be able to use wildcard patterns to describe lists of multiple files.
Activities
  1. lecture Read lecture notes: Typing Unix Commands
  2. lecture Read lecture notes: Text Editing
  3. lecture Read lecture notes: Patterns for File Names: Wildcards
  4. reading Read (optional): Peek: Ch 4
  5. lecture Read lecture notes: Quoting Special Characters
  6. asst Do assignment: Asst 3: Basic Unix Commands

2.3 Modifying and Combining Commands

Objectives

Upon completing this section, a student should be able to…

  • Use input redirection to send the contents of a file to the input of a command that is expecting standard (keyboard) input.
  • Use output redirection to send the output of a command into a file rather than to the screen.
  • Employ pipes to use the output of one command as the the input of another.
  • Use the find and xargs commands to search for and operate on groups of files.
Activities
  1. reading Read (optional): Peek: Ch 5
  2. reading Read (optional): Venkateshmurthy, Ch. 4
  3. lecture Read lecture notes: Redirection and Pipes
  4. lecture Read lecture notes: Commands That Launch Other Commands
  5. lecture Read lecture notes: Shell and Environment Variables
  6. asst Do assignment: Asst 4: Redirection & Pipelines

3 Working with Files
3.1 File Transfer

Objectives

Upon completing this section, a student should be able to…

  • Identify the common protocols used to transfer files from one computer to another over a network.
  • Understand the difference in ASCII text file format between Windows and other operating systems (Unix, Android, OS/X).
  • Transform ASCII text files from Windows format to Unix and vice versa.
  • Use SFTP to transfer files between their own PC and the CS Dept servers.
Activities
  1. reading Read (optional): Peek: Ch 6
  2. lecture Read lecture notes: File Transfer
  3. asst Do assignment: Asst 5: File Transfer

3.2 File Security

Objectives

Upon completing this section, a student should be able to…

  • Understand the Unix file permissions model.
  • List the permissions being granted by a file.
  • Change the permissions granted by a file.
Activities
  1. lecture Read lecture notes: File Protection
  2. reading Read (optional): Tansley, ch 1
  3. asst Do assignment: Asst 6: File Protection

3.3 The X Window System

Objectives

Upon completing this section, a student should be able to…

  • Launch a remote graphics-based session using a compressed X protocol (X2Go).
  • Launch xterms and other X-based programs for operation from their own PC.
  • Discuss the relative merits of the gedit, emacs, and vim editors in a graphics-mode session.
Activities
  1. reading Read (optional): Peek: Ch 7

  2. lecture Read lecture notes: The X Window System

  3. asst Do assignment: Asst 7: Getting Started With X

3.4 Editing Files

Objectives

Upon completing this section, a student should be able to…

  • Discuss the relative merits of the nano, gedit, emacs, and vim editors.
  • Use at least two of those editors to create and modify text files.
Activities
  1. lecture Read lecture notes: Editing in Text Mode
  2. lecture Read lecture notes: Editing under X
  3. reading Read (optional): Sobell, ch 6,7
  4. asst Do assignment: Asst 8: Editing Files

4 Software Development
4.1 Compiling

Objectives

Upon completing this section, a student should be able to…

  • Issue appropriate commands to compile simple C++, C, and Java programs.
  • Issue the sequence of steps required to compile programs consisting multiple compilation units.
  • Capture lengthy lists of error messages for later examination.
Activities
  1. lecture Read lecture notes: Executing Programs
  2. lecture Read lecture notes: Compiling Programs
  3. lecture Read lecture notes: Dealing with Error Messages
  4. asst Do assignment: Asst 9: Compiling & Executing Programs

4.2 Build Management

Objectives

Upon completing this section, a student should be able to…

  • Use the ’make` program to automate a series of project build steps.
  • Write make files describing the automation of a typical programming project.
  • Use the Maven and Gradle programs to automatically build a project.
Activities
  1. lecture Read lecture notes: Build Management with Make

  2. lecture Read lecture notes: Other Build Managers

  3. asst Do assignment: Asst 10: Project Management with Make

4.3 Version Control (git & GitHub)

Objectives

Upon completing this section, a student should be able to…

  • Create and use SSH keys for login authentication.
  • Use git to manage the history of changes made to a programming project,
  • Use GitHub to store those changes “in the cloud”.
Activities
  1. lecture Read lecture notes: SSH Keys
  2. lecture Read lecture notes: Version Control with git
  3. lecture Read lecture notes: git: Beyond the Basics (optional reading)
  4. asst Do assignment: Asst 11: Git & GitHub

4.4 Integrated Development Environments (IDEs)

Objectives

Upon completing this section, a student should be able to…

  • Identify the components comprising a typical IDE.
  • Describe different local/remote modes of development.
  • Employ the IDEs available on the CS Linux servers (emacs, VSCode, and Eclipse) to create and compile C++ programs.
Activities
  1. lecture Read lecture notes: Development Environments
  2. lecture Read lecture notes: IDEs & Remote Display
  3. lecture Read lecture notes: IDEs & Remote Development
  4. asst Do assignment: Asst 12: Working with IDEs

4.5 Debugging

Objectives

Upon completing this section, a student should be able to…

  • Understand the value and basic operations of an automated debugger.
  • Employ a debugger to
    • step through code
    • set breakpoints
    • examine the values of program variables
    • examine the call stack
  • Perform each of the above operations in nemiver, VSCode, and `Eclipse.
5 Command Line Interface (CLI) – advanced
5.1 Regular Expressions

Objectives

Upon completing this section, a student should be able to…

  • Write regular expression patterns to describe desired text during search operations.
  • Use common commands for searching through the contents of files and for doing simple text replacements within a file.
Activities
  1. lecture Read lecture notes: Patterns for Text: Regular Expressions
  2. reading Read (optional): Tansley, ch 7-8, 10
  3. asst Do assignment: Asst 14: Regular Expressions

5.2 Customization

Objectives

Upon completing this section, a student should be able to…

  • Understand how environment variables affect shell commands.
  • Set and examine environment variables.
  • Use backticks to capture command output in an environment variable.
  • Understand the role of the PATH variable.
Activities
  1. reading Read (optional): Tansley, ch 16-18, 20
  2. lecture Read lecture notes: Shore Are a Lot of Shells!
  3. lecture Read lecture notes: Customizing Your Unix Environment
5.3 Shell Scripts

Objectives

Upon completing this section, a student should be able to…

  • Understand the concept of a script.
  • Write simple scripts.
  • Use control-flow features of the scripting language to modify the order in which script commands are issued.
  • Pass command-line parameters to a script and manipulate those within the script’s commands.
Activities
  1. reading Read (optional): Venkateshmurthy, Ch. 8
  2. lecture Read lecture notes: Scripts
6 Important Dates
Activities
  1. exam Take the exam: Practice exam (on Canvas) Due: 04/17/2024, 12:00AM EDT
  2. event All assignments for the semester are due by 11:59:59PM ET. Due: 04/22/2024
  3. exam Take the exam: Final Exam (on Canvas) 04/24/2024, 12:00AM EDT - 04/25/2024, 11:59PM EDT

All times in this schedule are given in Eastern Time.

Symbol Key
lecture Lecture Notes (required reading)
reading Text chapter (optional reading)
lab Ungraded Activity
asst Assignment
exam Exam
event Event or
important date