CIS241

System-Level Programming and Utilities

Introduction

Erik Fredericks, frederer@gvsu.edu
Fall 2025

Based on material provided by Erin Carrier and Austin Ferguson

CIS241 | Fredericks | F25 | 1-Intro

The Plan (approximately)

First half: Linux
Second half: C
Throughout: Git (GitHub)

top-right
bottom-right

CIS241 | Fredericks | F25 | 1-Intro

About Me (or, the relevant things)

Office: MAK D2-235

Office Hours: TR, X-Ypm

Discord:

Join the #241 channel for async help

  • I'll also keep an eye on the CIS Discord as well
CIS241 | Fredericks | F25 | 1-Intro

Also

I've completely dumped Windows for Linux

  • Arch (EndeavorOS) at home
  • pop_os! (Debian) on this machine

Why?

Too much baggage to unpack without a therapist, but the Windows Recall thing was the final straw

What does this mean for me?

I don't have a Windows or a Mac to fix your issues for you...

CIS241 | Fredericks | F25 | 1-Intro

Lab Environments

EOS is where all your assignments will be tested on, so make sure it works there before submitting anything

All material can be tested on your own computers

  • Windows: WSL!

  • Linux: Linux!

  • Mac: Also Linux!

CIS241 | Fredericks | F25 | 1-Intro

Syllabus Time

Important things:

Grading

  • Homework (Projects): 50%
  • Mini-assignments (Minilabs): 20%
  • Midterm / Final Exams: 15% each
CIS241 | Fredericks | F25 | 1-Intro

Late Policy

Assignments are due on time.
You can turn it in up to three days late - it is 10% off each day and a 0 afterwards.

  • Including weekends
  • If there are extenuating circumstances talk to me early - if you ask me the night something is due I will most likely say no.
  • I am not going to be reminding you to submit anything - if you don't turn it in then it is up to you to manage the consequences.
  • I also tend to ignore my email/Discord the evening something is due - talk to me early
CIS241 | Fredericks | F25 | 1-Intro

AI Use

My preference is for you not to use it for this class. Try things first, watch how things break, fail often. Learn from your mistakes - that's how learning works.

However, I realize it can be helpful at times. I ask that you don't completely copy/paste what it gives you and that you understand how it is helping. Note that if I ask you to explain your code and you can't, then it becomes an academic misconduct violation.

If you become one of those coders in industry who can't function without an AI helper then you are pretty much useless. Use it to clarify things, not to do your job.

top-corner

CIS241 | Fredericks | F25 | 1-Intro
Hackers

The Bigger Picture

CIS241 | Fredericks | F25 | 1-Intro

The Bigger Picture (Linux edition)

Who cares?

  1. For one, think of how cool you'll look using the terminal in front of friends and family.

    • See previous slide
  2. Access remote systems

    • Web servers, high-performance computing environments, cloud systems, etc.
  3. Automate, automate, automate

    • Automate all the things (Windows included!)
      • Windows ... how?!?!!
CIS241 | Fredericks | F25 | 1-Intro

The Bigger Picture (C Edition)

C is gross - shouldn't we be using Rust? Or Python or Java?!?!

  • Does anybody know why C still exists?
CIS241 | Fredericks | F25 | 1-Intro

The Bigger Picture (Git Edition)

Does anybody know what git is?

  • Also, who created it?

GitHub is a website (owned by Microsoft, oddly), that serves as a remote repository for Git projects

  • You don't need GitHub to use git - you can host your own repositories locally
  • Or on a personal home server!

We'll be using GitHub for the duration of the class

  • Good habit to get into
  • Critical for industry ... why?
CIS241 | Fredericks | F25 | 1-Intro

Knowing the basics

Hardware vs. software

  • Software programs contain instructions to perform actions and make decisions that control the hardware
  • Software can be low-level (driver code) or high-level (applications)
  • Hardware includes keyboard, screen, hard disks, CPU

Operating system (OS): provides the connection between hardware and software

  • E: When you type a key on the keyboard, the OS accepts the input and sends the output to your monitor
CIS241 | Fredericks | F25 | 1-Intro

Some definitions

Native OS: the primary OS on a system

Virtual machine (VM): allowing non-native OSs to run on your machine

  • VMWare / VirtualBox: a software application that manages one or more virtual machines

Docker: creates a pre-packaged environment for applications to run on any machine


EOS: the lab you are in - remotely accessible!

CIS241 | Fredericks | F25 | 1-Intro

TODAY'S TASK --> SSHing to EOS

https://www.gvsu.edu/computing/remote-access-100.htm

  • You are remoting into the computers in this lab

    • gasp
  • SO DON'T TURN THEM OFF WHEN YOU LEAVE

  • This is important as you'll probably want the ability to work from home

CIS241 | Fredericks | F25 | 1-Intro

Remote Access

SSH - Secure Shell

What is a shell?

What shell am I using?

echo $0

$0 -- variable for the name of the shell

SSH is how you can access a remote shell

Try it! Or else! ... Or else what?!

  • Or else you won't be able to do your homework and pass the course!
CIS241 | Fredericks | F25 | 1-Intro

<style scoped> img {position:absolute;top:20px;right:20px; } </style> <img src="https://i.ytimg.com/vi/a6iW-8xPw3k/mqdefault.jpg" />

* Better memory management - you know exactly what is being used * Still used in embedded systems * More importantly - still the leader in safety-critical programming (e.g., automotive, flight)