Download presentation
Presentation is loading. Please wait.
1
Welcome to Intro to Systems Programming!
CS/COE 0449 (term 2184) Jarrett Billingsley
2
Administrivia CS449 (2184)
3
hi you can just call me Jarrett
graduated from Pitt with a (bachelor’s) degree in CS in 2009 I’ve been a “part time” instructor here for almost 2 years I love teaching course site: pitt.edu/~jfb42/cs0449 all the stuff I talk about today is on the course site office: 6148 SENSQ office Hours: Mon/Wed 12:30-4:15 piazza: Yes discord: Yes CS447 (2184)
4
Textbook (?) Practical C Programming (Oualline)
no readings, no exercises actually I don't really use it at all it's an adorable time capsule it's good for teaching about C but it's not strictly required CS447 (2184)
5
Grading there is no such thing as attendance labs and quizzes: 15%
several labs don't worry about the quizzes, they're worth so little projects: 40% five projects, so 8% each time management is a good skill exams: 45% 2 midterms, 1 (semi-cumulative) final, so 15% each exact dates of midterms are a bit flexible for your sake grading scale is a little unusual must get at least a 75% to get a C, in order to pass CS447 (2184)
6
Expectations religious absences are excused: contact me ASAP
students with disabilities should contact the Office of Disability Resources and Services (DRS) if you haven’t already 216 William Pitt Union; ; TTY: cheating: 0 on assignment first time, fail the course second time. …but you can work with one partner on projects inform me ahead of time, and do not share code! you can also talk about labs, but still no sharing stuff jokes or comments about sex, gender, race, ethnicity, religion, etc. will not be tolerated this is not Reddit or 4Chan this goes for lecture, office hours, chatroom, etc. other than that… go nuts, idgaf CS447 (2184)
7
Teaching philosophy I wanna help you understand!!!!!!
NO QUESTIONS ARE DUMB!!!!! NEVER BE AFRAID TO ASK THEM!!!! DON’T STRUGGLE IN SILENCE ON YOUR PROJECTS/LABS!!!!!!! I trust you! I try to be accommodating I don’t think most cheaters are being lazy but you’re an adult, and are responsible for your actions. yeah, you could learn all this stuff on your own you’re paying money to have access to me I actually get bored just standing up here and talking be more interactive CS447 (2184)
8
I can tell when you cheat :^)
I'm not grading this term but I'll still look at your stuff If you're confused, don't cheat, ask me for help? don't wait until you get an F on exam 1 hot tips for not cheating: don't cmon, don't don't post your damn code on github until after the semester if your enrollment is contingent upon your GPA, fucking cheat CS447 (2184)
9
Intro CS449 (2184)
10
Goals of this course goes hand-in-hand with 447
both teach some similar topics from different angles: representation of data organization of memory how programs really run the call stack and calling conventions this course also exposes you to a new programming language, C it's a good kind of shock, like a splash of cold water CS449 (2184)
11
#include <stdio.h> int main() { printf("Hello, world!\n");
splashhhhh 💦 well here's some C #include <stdio.h> int main() { printf("Hello, world!\n"); return 0; } CS449 (2184)
12
Falling down the rabbit hole
if you compile that C program, you don't get a "class file" you get a real, honest-to-god executable program but... what does that executable program file contain? what happens when you run it? how does the program actually make things happen? how do programs control the computer hardware? how do multiple programs run at the same time? that's what this course is all about. CS449 (2184)
13
Tools of the trade this course also exposes you to a lot of common tools ssh ftp gcc gdb make these are used allllll the tiiiiiiiiime in all areas of programming CS449 (2184)
14
Appearances can be deceiving
C's syntax (the symbols and words used to represent a program) might remind you of Java but it sure doesn't behave the same way control structures (if-elses, loops, switches) are pretty similar but just about everything else is… different in some way int x = 5; printf("The value of x is: " + x); let's see what it prints oh. webcomicname.com CS449 (2184)
15
The training wheels are off
C is weird and prickly and unforgiving it's also like 45 years old maybe these traits are reminding you of a person BUT: C helps you deeply understand how computers work because: virtually every CPU architecture around today has been designed to run programs written in C understanding C is understanding how modern computers work. CS449 (2184)
16
Coevolution like this flower and the weird bird that matches it, C and modern CPUs have coevolved C became popular so they made CPUs that could run C programs fast so C became more popular, etc… most of the operations in C have, like, a direct mapping to a CPU operation which you will/have learned about in 447 there's a lot of back-and-forth between these courses! CS449 (2184)
17
Blobject-bloriented blprogramming
Java is OOP: "object-oriented programming" that's fine, but... if someone tells you that their way of thinking will solve all your problems, they're lying (this is general life advice) part of being an "engineer" is knowing what tool is appropriate for the situation and OOP is not always that tool OOP literally every programming problem Java CS449 (2184)
18
Procedural programming
a procedure (or function as most people call them today) is an ordered sequence of computational steps functions can call one another the callee runs until it finishes then control goes back to the caller that's... it revolutionary huh the 1970s were a simpler time C OOP Java CS449 (2184)
19
A product of its time when C was developed, computers hadn't… really settled down yet things were weird kind of the "cambrian explosion" of CPU design also computers were far less capable they had to trim a lot of "luxury" features like "compiler errors" C takes a very odd approach to platform independence basically most stuff is "undefined" this makes it flexible to a fault CS449 (2184)
20
before each integer type
As an example… let's look at C's primitive data types: Integers char short int long long long* Reals float double long double* you can also stick signed or unsigned before each integer type *C99 and newer only... yaaaaaaaaaaay... how big are these? it's platform dependent CS449 (2184)
21
Um, what about strings? hahahaha oh geez
strings are a fancy high-level abstraction!!! what a luxury char is an integer which happens to be used for text, uh, sometimes depending on what (human) language you're talking about and what system you're running on char is really defined as the smallest addressable integer type. these days that usually means a byte but that's not guaranteed by the C spec. so don't assume char always has something to do with text it might just be some bytes CS449 (2184)
22
Where we're going first part of the course is C
then we talk about programs and memory last part is operating systemy stuff get ready for it!!!! CS449 (2184)
Similar presentations
© 2025 SlidePlayer.com Inc.
All rights reserved.