Docsity
Docsity

Prepare for your exams
Prepare for your exams

Study with the several resources on Docsity


Earn points to download
Earn points to download

Earn points by helping other students or get them with a premium plan


Guidelines and tips
Guidelines and tips

Introduction to CSE351, Winter 2021, Lecture notes of Programming Languages

An introduction to the CSE351 course offered in Winter 2021 at an unspecified university. The course covers the hardware/software interface and aims to teach students the key abstractions 'under the hood' of computers and programs. information on the course policies, teaching staff, and topics that will be covered. Students are encouraged to work together and will be expected to complete group work. The document also includes a list of fun topics that will be touched on throughout the course.

Typology: Lecture notes

2020/2021

Uploaded on 05/11/2023

jannine
jannine 🇺🇸

4.9

(14)

240 documents

1 / 27

Toggle sidebar

This page cannot be seen from the preview

Don't miss anything!

bg1
CSE351, Winter 2021M0-L1: Introduction
The Hardware/Software Interface
CSE 351 Winter 2021
Instructor:
Mark Wyse
Teaching Assistants:
Kyrie Dowling
Catherine Guevara
Ian Hsiao
Jim Limprasert
Armin Magness
Allie Pfleger
Cosmo Wang
Ronald Widjaja
http://xkcd.com/676/
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff
pf12
pf13
pf14
pf15
pf16
pf17
pf18
pf19
pf1a
pf1b

Partial preview of the text

Download Introduction to CSE351, Winter 2021 and more Lecture notes Programming Languages in PDF only on Docsity!

The Hardware/Software Interface

CSE 351 Winter 2021 Instructor: Mark Wyse Teaching Assistants: Kyrie Dowling Catherine Guevara Ian Hsiao Jim Limprasert Armin Magness Allie Pfleger Cosmo Wang Ronald Widjaja http://xkcd.com/676/

Lesson Outline

❖ Course Introduction

▪ https://courses.cs.washington.edu/courses/cse351/21wi/

❖ Course Policies

▪ Remote Instruction

Introductions: Course Staff

❖ Teaching Assistants

▪ Available in section, office hours, and on Ed Discussion

▪ An invaluable source of information and help

  • They have been in your seat
  • They know the material and assignments well
  • They are eager to help you!

❖ Get to know us

▪ We are all here to help you succeed!

Who are You?

❖ ~ 105 students registered, single lecture

❖ CSE majors, EE majors, and more

▪ Most of you will find almost everything in the course new

▪ Many of you are new to CSE and/or UW (for 2020-2021)

❖ Get to know each other and help each other out!

▪ Learning is much more fun with friends

▪ Working well with others is a valuable life skill

▪ Diversity of perspectives expands your horizons

▪ A lot of work this quarter is expected to be done in groups

1000001101111100001001000001110000000000 0111010000011000 10001011010001000010010000010100 10001011010001100010010100010100 100011010000010000000010 1000100111000010 110000011111101000011111 11110111011111000010010000011100 10001001010001000010010000011000 1000001101111100001001000001110000000000 0111010000011000 10001011010001000010010000010100 10001011010001100010010100010100 100011010000010000000010 1000100111000010 110000011111101000011111 11110111011111000010010000011100

Welcome to CSE351!

❖ This is an introduction that will:

▪ Profoundly change/augment your view of computers and

programs

▪ Leave you impressed that computers ever work

Code in Many Forms

High Level Language

( e.g. , C, Java)

Assembly Language

Machine Code

if (x != 0) y = (y+z)/x; cmpl $0, - 4(%ebp) je .L movl - 12(%ebp), %eax movl - 8(%ebp), %edx leal (%edx,%eax), %eax movl %eax, %edx sarl $31, %edx idivl - 4(%ebp) movl %eax, - 8(%ebp) .L2: 1000001101111100001001000001110000000000 0111010000011000 10001011010001000010010000010100 10001011010001100010010100010100 100011010000010000000010 1000100111000010 110000011111101000011111 11110111011111000010010000011100 10001001010001000010010000011000 Compiler Assembler

Roadmap

**car *** c = malloc(sizeof( car )); c->miles = 100; c->gals = 17; float mpg = get_mpg(c); free(c); Car c = new Car(); c.setMiles(100); c.setGals(17); float mpg = c.getMPG(); get_mpg: pushq %rbp movq %rsp, %rbp ... popq %rbp ret C: Java: Assembly language: Machine code: 0111010000011000 100011010000010000000010 1000100111000010 110000011111101000011111 Computer system: OS: Memory & data Integers & floats x86 assembly Procedures & stacks Executables Arrays & structs Memory & caches Processes Virtual memory Memory allocation Java vs. C What happens as your computer is executing one or more processes?

Some fun topics that we will touch on

❖ Which of the following seems the most interesting to

you? (vote on Ed Lessons)

a) What is a GFLOP and why is it used in computer benchmarks? b) How and why does running many programs for a long time eat into your memory (RAM)? c) What is stack overflow and how does it happen? d) Why does your computer slow down when you run out of disk space? e) What was the flaw behind the original Internet worm, the Heartbleed bug, and the Cloudbleed bug? f) What is the meaning behind the different CPU specifications? (e.g. # of cores, # and size of cache, supported memory types)

Bookmarks

❖ Website: https://courses.cs.washington.edu/courses/cse351/21wi/

▪ Schedule, policies, materials, videos, assignments, etc.

❖ Discussion: https://us.edstem.org/courses/3020/discussion/

▪ Announcements made here

▪ Ask and answer questions – staff will monitor and contribute

❖ Lessons: https://us.edstem.org/courses/3020/lessons/

❖ Gradescope: https://www.gradescope.com/courses/

▪ Lab submissions

❖ Canvas: https://canvas.uw.edu/courses/

▪ Calendar (zoom links), gradebook

My Goals for the Course (and you)

❖ Create a welcoming, inclusive, and supportive

learning environment for everyone

▪ concerns? Reach out! (staff, anonymous, CSE advising, etc.)

❖ Enhance your understanding of fundamental topics

related to the HW/SW interface

❖ Every student takes away one useful concept,

technique, idea, etc.

❖ 3 Simple rules for our course:

▪ Respect one another

▪ Ask questions

▪ Have fun!

351 Remote Instruction

❖ This class is highly conceptual and meant to be

digested gradually

▪ Readings (and quizzes) need to be done before lecture

▪ Lectures will include practice problems and homework time

▪ Homework following most lectures, due 1-2 lectures later

❖ Questions

▪ Before and during lecture, there will be a monitored lecture

discussion post

▪ During group work, questions should be asked verbally or

via chat (TAs will circulate through groups)

❖ Practice task: open the Group Chat and type your

favorite ice cream flavor

351 Remote Instruction

❖ Group work will be emphasized in this class

▪ Lecture and section will use breakout rooms – you will get

the most out of it if you actively participate!

▪ Many assignments allow collaboration – talking to

classmates will help you synthesize concepts and terminology

▪ Self-select into small groups on Canvas

(https://canvas.uw.edu/courses/1432121/groups#tab- 114464 )

  • If you are not part of a group on Canvas, then I will randomly assign you to one each lecture
  • You can freely change groups throughout the quarter

▪ Responsibility for learning falls on you

Reference Material

❖ Computer Systems: A Programmer’s Perspective

▪ Randal E. Bryant and David R. O’Hallaron

▪ Website: http://csapp.cs.cmu.edu

  • see site for changes and errata

▪ North American 3rd edition

▪ Optional, additional readings

❖ A good C book (or online reference)

▪ The C Programming Language (Kernighan and Ritchie)

▪ C: A Reference Manual (Harbison and Steele)

▪ https://www.cplusplus.com

Workload

❖ Readings (~5%)

▪ one attempt per question (completeness)

❖ Homework (~15-20%)

▪ unlimited submission attempts (autograded correctness)

❖ Labs (~35-40%)

▪ last submission graded (correctness)

❖ Section Worksheets (~5%)

▪ single submission (completeness)

❖ Study Guides (~30%)

▪ Cumulative learning assessments

❖ EPA: Effort, Participation, and Altruism (~5%)

▪ engagement in course and discussion, in-lesson polls