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

Programming Languages & Software Engineering, Summaries of Programming Languages

CSE341: Programming Languages. Lecture 1. Course Mechanics ... Read all course policies (4 short documents on web page) ... Becomes easier to cheat – don't!

Typology: Summaries

2022/2023

Uploaded on 05/11/2023

hollyb
hollyb 🇺🇸

4.8

(39)

204 documents

1 / 6

Toggle sidebar

Related documents


Partial preview of the text

Download Programming Languages & Software Engineering and more Summaries Programming Languages in PDF only on Docsity! CSE341: Programming Languages Lecture 1 Course Mechanics ML Variable Bindings Dan Grossman Fall 2017 Welcome! We have 10 weeks to learn the fundamental concepts of programming languages With hard work, patience, and an open mind, this course makes you a much better programmer – Even in languages we won’t use – Learn the core ideas around which every language is built, despite countless surface-level differences and variations – Poor course summary: “Uses ML, Racket, and Ruby” Today’s class: – Course mechanics – [A rain-check on motivation] – Dive into ML: Homework 1 due Friday of next week Fall 2017 2CSE341: Programming Languages Concise to-do list In the next 24-48 hours: 1. Read course web page: http://courses.cs.washington.edu/courses/cse341/17au/ 2. Read all course policies (4 short documents on web page) 3. Adjust class email-list settings as necessary 4. Complete Homework 0 (survey worth 0 points) 5. Get set up using Emacs [optional; recommended] and ML – Installation/configuration/use instructions on web page – Essential; non-intellectual • No reason to delay! Fall 2017 3CSE341: Programming Languages Who: Course Staff Fall 2017 4CSE341: Programming Languages Dan Grossman: Faculty, 341 my favorite course / area of expertise Five (!!) great TAs Get to know us! Staying in touch • Course email list: cse341a_au17@u.washington.edu – Students and staff already subscribed – You must get announcements sent there – Fairly low traffic • Course staff: cse341-staff@cs.washington.edu plus individual emails • Message Board – For appropriate discussions; TAs will monitor – Optional/encouraged, won’t use for important announcements • Anonymous feedback link on webpage – For good and bad: If you don’t tell me, I don’t know Fall 2017 5CSE341: Programming Languages Lecture: Dan • Slides, code, and reading notes / videos posted – May be revised after class – Take notes: materials may not describe everything • Slides in particular are visual aids for me to use • Ask questions, focus on key ideas • Engage actively – Arrive punctually (beginning matters most!) and well-rested • Just like you will for the midterm! – Write down ideas and code as we go – If attending and paying attention is a poor use of your time, one of us is doing something wrong Fall 2017 6CSE341: Programming Languages Section • Required: will usually cover new material • Sometimes more language or environment details • Sometimes main ideas needed for homework • Will meet this week: using Emacs and ML Material often also covered in reading notes / videos Fall 2017 7CSE341: Programming Languages Reading Notes and Videos • Posted for each “course unit” – Go over most (all?) of the material (and some extra stuff?) • So why come to class? – Materials let us make class-time much more useful and interactive • Answer questions without being rushed because occasionally “didn’t get to X; read/watch about it” • Can point to optional topics/videos • Can try different things in class, not just recite things • Don’t need other textbooks – I’ve roughly made one myself Fall 2017 8CSE341: Programming Languages Office hours • Regular hours and locations on course web – Changes as necessary announced on email list • Use them – Please visit me – Ideally not just for homework questions (but that’s good too) Fall 2017 9CSE341: Programming Languages Homework • Seven total • To be done individually • Doing the homework involves: 1. Understanding the concepts being addressed 2. Writing code demonstrating understanding of the concepts 3. Testing your code to ensure you understand and have correct programs 4. “Playing around” with variations, incorrect answers, etc. Only (2) is graded, but focusing on (2) makes homework harder • Challenge problems: Low points/difficulty ratio Fall 2017 10CSE341: Programming Languages Note my writing style • Homeworks tend to be worded very precisely and concisely – I write like a computer scientist (a good thing!) – Technical issues deserve precise technical writing – Conciseness values your time as a reader – You should try to be precise too • Skimming or not understanding why a word or phrase was chosen can make the homework harder • By all means ask if a problem is confusing – Being confused is normal and understandable – And I may have made a mistake Fall 2017 11CSE341: Programming Languages Academic Integrity • Read the course policy carefully – Clearly explains how you can and cannot get/provide help on homework and projects • Always explain any unconventional action • I have promoted and enforced academic integrity since I was a freshman – Great trust with little sympathy for violations – Honest work is the most important feature of a university • This course especially: Do not web-search for homework solutions! We will check! Fall 2017 12CSE341: Programming Languages A variable binding • Syntax: – Keyword val and punctuation = and ; – Variable x – Expression e • Many forms of these, most containing subexpressions Fall 2017 25CSE341: Programming Languages val z = (x + y) + (y + 2); (* comment *) More generally: val x = e; The semantics • Syntax is just how you write something • Semantics is what that something means – Type-checking (before program runs) – Evaluation (as program runs) • For variable bindings: – Type-check expression and extend static environment – Evaluate expression and extend dynamic environment So what is the precise syntax, type-checking rules, and evaluation rules for various expressions? Good question! Fall 2017 26CSE341: Programming Languages ML, carefully, so far • A program is a sequence of bindings • Type-check each binding in order using the static environment produced by the previous bindings • Evaluate each binding in order using the dynamic environment produced by the previous bindings – Dynamic environment holds values, the results of evaluating expressions • So far, the only kind of binding is a variable binding – More soon Fall 2017 27CSE341: Programming Languages Expressions • We have seen many kinds of expressions: 34 true false x e1+e2 e1<e2 if e1 then e2 else e3 • Can get arbitrarily large since any subexpression can contain subsubexpressions, etc. • Every kind of expression has 1. Syntax 2. Type-checking rules • Produces a type or fails (with a bad error message ) • Types so far: int bool unit 3. Evaluation rules (used only on things that type-check) • Produces a value (or exception or infinite-loop) Fall 2017 28CSE341: Programming Languages Variables • Syntax: sequence of letters, digits, _, not starting with digit • Type-checking: Look up type in current static environment – If not there fail • Evaluation: Look up value in current dynamic environment Fall 2017 29CSE341: Programming Languages Addition • Syntax: e1 + e2 where e1 and e2 are expressions • Type-checking: If e1 and e2 have type int, then e1 + e2 has type int • Evaluation: If e1 evaluates to v1 and e2 evaluates to v2, then e1 + e2 evaluates to sum of v1 and v2 Fall 2017 30CSE341: Programming Languages Values • All values are expressions • Not all expressions are values • A value “evaluates to itself” in “zero steps” • Examples: – 34, 17, 42 have type int – true, false have type bool – () has type unit Fall 2017 31CSE341: Programming Languages Slightly tougher ones What are the syntax, typing rules, and evaluation rules for conditional expressions? What are the syntax, typing rules, and evaluation rules for less-than expressions? Fall 2017 32CSE341: Programming Languages The foundation we need We have many more types, expression forms, and binding forms to learn before we can write “anything interesting” Syntax, typing rules, evaluation rules will guide us the whole way! For Homework 1: functions, pairs, conditionals, lists, options, and local bindings – Earlier problems require less Will not add (or need): – Mutation (a.k.a. assignment): use new bindings instead – Statements: everything is an expression – Loops: use recursion instead Fall 2017 33CSE341: Programming Languages
Docsity logo



Copyright © 2024 Ladybird Srl - Via Leonardo da Vinci 16, 10126, Torino, Italy - VAT 10816460017 - All rights reserved