1 of 2

Course Components:

Lecture Participation: submit these handouts via Gradescope app

Lab Participation: be in lab, participate in discussions

Weekly Quizzes: online; do 9am (before class) on Wednesdays

Lab Reports: every 2 weeks (2, 4, 6, 8, 10), on your Github Pages site (see lab 1), due Tuesday evening

Skill Demonstrations/Oral Exams: Week 3, 5, 7, 9 scheduled outside of class, make-up in finals week

Name:

PID:

CSE15L – Software Tools & Techniques Laboratory (Winter 2024)

When you complete this course, you should be able to:

  1. Use terminal commands to navigate directory structures, manipulate files, and build projects
  2. Use git and Github to download and upload code to and from git repositories
  3. Use ssh and related tools to connect to and work on remote servers
  4. Use a command-line debugger to inspect running programs
  5. Recognize, run, and adapt build files (like make) and scripts (like bash)
  6. Set up and run a unit-testing library (at least for Java, like JUnit)
  7. Diagnose problematic program behavior better than when you started the course

That's a lot of stuff! Is this what you expected? What is a question you have about course content?

2 of 2

Name:

PID:

Some Key Commands

cat <path1> <path2> ... - “Concatenate” Used to print the contents of one or more files given by the paths

ls <path> - “List” Used to list the files and folders the given path

pwd - “Print working directory” Used to display the current working directory

cd <path> - “Change Directory” Used to switch the current working directory to the given path

Example file structure:

/home/

|- lecture1/

|- Hello.java

|- README

|- messages/

|- en-us.txt (English, USA)

|- es-mx.txt (Espanol, Mexico)

|- zh-cn.txt (Chinese, PRC)

Absolute path: Where a single file or folder is within a filesystem Example: /home/lecture1/README

Root folder/directory: The folder that isn't contained in any other folder. Often written as / or C:\\

Relative path: A part of a path that doesn't start with the root. Example: lecture1/README

Working directory: An absolute path to a directory that a program or terminal uses to resolve relative paths.

Parent directory: The directory “above” or “outside” the current directory. In paths, written ..

No directory/no path: Single dots . in absolute paths are ignored (e.g. /home/./lecture1 means /home/lecture1)

Consider the following working directories, relative paths, and corresponding absolute paths. Fill in the blanks.

To resolve a relative path, join it with the current working directory, then remove single dots and collapse directory names that are followed by ..

Working Directory (pwd) Relative Path Resolved Path

/home ./lecture1 /home/lecture1

/home/lecture1/messages ../Hello.java /home/lecture1/Hello.java

/home/lecture1 /home/lecture1/messages/en-us.txt

/ home

/home/lecture1 ..

/home/lecture1 Goodbye.java

/home/ messages/

Downloading Code from Github at the command line

git clone <repository-url>

Downloads (“clones”) the code from the given repository-url. The repository with the example from this lecture is at https://github.com/ucsd-cse15l-f23/lecture1