Introduction to Prof. Clarkson Fall Today s music: Prelude from Final Fantasy VII by Nobuo Uematsu (remastered by Sean Schafianski)

Similar documents
Introduction to Prof. Clarkson Fall Today s music: Prelude from Final Fantasy VII by Nobuo Uematsu (remastered by Sean Schafianski)

Introduction to Prof. Clarkson Fall Today s music: Prelude from Final Fantasy VII by Nobuo Uematsu (remastered by Sean Schafianski)

Introduction to Nate Foster Spring 2018

Introduction to Prof. Clarkson Fall Today s music: Prelude from Final Fantasy VII by Nobuo Uematsu (remastered by Sean Schafianski)

CMSC 330: Organization of Programming Languages. Functional Programming with OCaml

CS 3110 Lecture 1 Course Overview

Lists. Prof. Clarkson Fall Today s music: "Blank Space" by Taylor Swift

Introduction to OCaml

Victory Lap. Prof. Clarkson Fall Today s music: We are the Champions by Queen

Functions. Nate Foster Spring 2018

Lecture 1. Course Overview, Python Basics

CS Introduction to Security. Prof. Clarkson Spring 2017

Lecture 1. Course Overview, Python Basics

COSE212: Programming Languages. Lecture 0 Course Overview

CS457/557 Functional Languages

15-411/ Compiler Design

Announcements. 1. Forms to return today after class:

CS/ENGRD 2110 Object-Oriented Programming and Data Structures Spring 2012 Thorsten Joachims

Welcome to CS 135 (Winter 2018)

CS 241 Data Organization. August 21, 2018

Lecture 1: Overview

Introduction to Computer Systems

Functional Programming

61A LECTURE 1 FUNCTIONS, VALUES. Steven Tang and Eric Tzeng June 24, 2013

Welcome to CS 135 (Fall 2018) Themes of the course. Lectures. cs135/

CS Lecture 5: Pattern Matching. Prof. Clarkson Fall Today s music: Puff, the Magic Dragon by Peter, Paul & Mary

CS 11 Haskell track: lecture 1

Programming Languages and Techniques (CIS120)

Introduction to Computer Systems

TA hours and labs start today. First lab is out and due next Wednesday, 1/31. Getting started lab is also out

CS 6371: Advanced Programming Languages

CS 240 Fall 2015 Section 004. Alvin Chao, Professor


CSE 332: Data Abstractions. Ruth Anderson Spring 2014 Lecture 1

Mutable Data Types. Prof. Clarkson Fall A New Despair Mutability Strikes Back Return of Imperative Programming

Course Syllabus. Programming Language Paradigms. Spring - DIS Copenhagen. Semester & Location: Elective Course - 3 credits.

Outline. CIS 110: Introduction to Computer Programming. What is Computer Science? What is computer programming? What is computer science?

WELCOME TO CS 16! Enrollment status: 117/ Problem Solving with Computers-I

Lecture 5 Abstract Data Types

Database Concepts. CS 377: Database Systems

Lecture 1. Course Overview Types & Expressions


TO: Doctoral Students Expected to Register in EDD 1006 for Spring FROM: R. H. Red Owl, Ph.D., Professor

Welcome to. Instructor Marc Pomplun CS 470/670. Introduction to Artificial Intelligence 1/26/2016. Spring Selectivity in Complex Scenes

Languages and Compilers

Course Overview, Python Basics

CS252 Advanced Programming Language Principles. Prof. Tom Austin San José State University Fall 2013

CS Lecture 6: Map and Fold. Prof. Clarkson Fall Today s music: Selections from the soundtrack to 2001: A Space Odyssey

Programming Languages and Techniques (CIS120)

CS 378 (Spring 2003) Linux Kernel Programming. Yongguang Zhang. Copyright 2003, Yongguang Zhang

CS270 Computer Organization Fall 2017

CISN 340 Data Communication and Networking Fundamentals Fall 2012 (Hybrid)

CSC 111 Introduction to Computer Science (Section C)

Welcome to... CS113: Introduction to C

COS 326 Functional programming: an elegant weapon for the modern age

Compiler Design Spring 2018

Fundamentals of Computer Science CSCI 136 Syllabus Fall 2018

ECE Object-Oriented Programming using C++ and Java

Programming Languages CSCE

CSE506: Operating Systems CSE 506: Operating Systems

What Is Computer Science? The Scientific Study of Computation. Expressing or Describing

CSE506: Operating Systems CSE 506: Operating Systems

CS558 Programming Languages

What a lot of folks might call the class but as we ll see later, it s not entirely accurate.

CS1110 Lab 1 (Jan 27-28, 2015)

CIS192: Python Programming


Blackboard Student Guide

Programming Languages and Techniques (CIS120)

Introduction, Functions

Organization of Programming Languages (CSE452) Why are there so many programming languages? What makes a language successful?

WELCOME! (download slides and.py files and follow along!) LECTURE 1

CS 553: Algorithmic Language Compilers (PLDI) Graduate Students and Super Undergraduates... Logistics. Plan for Today

CS 241 Data Organization using C

CSE 417 Practical Algorithms. (a.k.a. Algorithms & Computational Complexity)

(0) introduction to the course. how to learn a programming language. (0) course structure

Cleveland State University

Welcome to CS 241 Systems Programming at Illinois

CSC 261/461 Database Systems. Fall 2017 MW 12:30 pm 1:45 pm CSB 601

Hi! My name is Sorin. Programming Languages. Why study PL? (discussion) Why study PL? Course Goals. CSE : Fall 2017

Programming Languages

BOSTON UNIVERSITY Metropolitan College MET CS342 Data Structures with Java Dr. V.Shtern (Fall 2011) Course Syllabus

! Broaden your language horizons! Different programming languages! Different language features and tradeoffs. ! Study how languages are implemented

cmpt 440/821 Advanced Topics in Programming Languages

Linear Algebra Math 203 section 003 Fall 2018

CONTENTS: What Is Programming? How a Computer Works Programming Languages Java Basics. COMP-202 Unit 1: Introduction

INTRODUCTION PRINCIPLES OF PROGRAMMING LANGUAGES. Norbert Zeh Winter Dalhousie University 1/10

Map and Fold. Prof. Clarkson Fall Today s music: Selections from the soundtrack to 2001: A Space Odyssey

CSCI 2824, Discrete Structures Fall 2017 Tony Wong. Lecture 1: Introduction and Binary Arithmetic

Database Systems (INFR10070) Dr Paolo Guagliardo. University of Edinburgh. Fall 2016

Haskell in the Software Industry

Chapter 11 :: Functional Languages

CSCI 201L Syllabus Principles of Software Development Spring 2018

Student Guide G. That s it. Simple for you. Powerful for your future. Technical Support

Blackboard Student Guide

Physics 2660: Fundamentals of Scientific Computing. Lecture 5 Instructor: Prof. Chris Neu

Operating Systems Course Overview

Beijing Jiaotong University CS-23: C++ Programming Summer, 2019 Course Syllabus

Welcome to Computer Organization and Design Logic

WELCOME TO CS 24! Enrollment status: 105/105, Read the syllabus. Know what s required. Know how to get help. Problem Solving with Computers-II

Transcription:

Introduction to 3110 Prof. Clarkson Fall 2015 Today s music: Prelude from Final Fantasy VII by Nobuo Uematsu (remastered by Sean Schafianski)

Welcome! Programming isn t hard Programming well is very hard High variance among professionals productivity: 10x or more Studying functional programming will make you a better programmer, but it requires an open mind

What is a functional language? A functional language: defines computations as mathematical functions avoids mutable state State: the information maintained by a computation Mutable: can be changed (antonym: immutable)

Functional vs. imperative Functional languages: Higher level of abstraction Easier to develop robust software Immutable state: easier to reason about software Imperative languages: Lower level of abstraction Harder to develop robust software Mutable state: harder to reason about software You don t have to believe me now. If you master a functional language, you will. J

Imperative programming Commands specify how to compute by destructively changing state: x = x+1; a[i] = 42; p.next = p.next.next; Functions/methods have side effects: int wheels(vehicle v) { v.size++; return v.numwheels; }

Mutability The fantasy of mutability: It's easy to reason about: the machine does this, then this... The reality of mutability: Machines are good at complicated manipulation of state Humans are not good at understanding it! mutability breaks referential transparency: ability to replace expression with its value without affecting result of computation In math, if f(x)=y, then you can substitute y anywhere you see f(x) In imperative languages, you cannot: f might have side effects, so computing f(x) at time t might result in different value than at time t' mutable programming is not well-suited to building correct code!

Mutability The fantasy of mutability: There is a single state The computer does one thing at a time The reality of mutability: There is no single state Programs have many threads, spread across many cores, spread across many processors, spread across many computers each with its own view of memory There is no single program Most applications do many things at one time mutable programming is not well-suited to modern computing!

Functional programming Expressions specify what to compute Variables never change value Functions never have side effects The reality of immutability: No need to think about state Powerful ways to build correct programs and concurrent programs

Why study functional programming? 1. Functional languages teach you that programming transcends programming in a language (assuming you you have only programmed in imperative languages) 2. Functional languages predict the future 3. (Functional languages are sometimes used in industry) 4. Functional languages are elegant

Why study functional programming? 1. Functional languages teach you that programming transcends programming in a language (assuming you you have only programmed in imperative languages) 2. Functional languages predict the future 3. (Functional languages are sometimes used in industry) 4. Functional languages are elegant

Analogy: studying a foreign language Learn about another culture; incorporate aspects into your own life Shed preconceptions and prejudices about others Understand your native language better

Alan J. Perlis A language that doesn't affect the way you think about programming is not worth knowing. 1922-1990 First recipient of the Turing Award for his influence in the area of advanced programming techniques and compiler construction 12

Why study functional programming? 1. Functional languages teach you that programming transcends programming in a language (assuming you you have only programmed in imperative languages) 2. Functional languages predict the future 3. (Functional languages are sometimes used in industry) 4. Functional languages are elegant

Functional languages predict the future Garbage collection Java [1995], LISP [1958] Generics Java 5 [2004], ML [1990] Higher-order functions C#3.0 [2007], Java 8 [2014], LISP [1958] Type inference C++11 [2011], Java 7 [2011] and 8, ML [1990] What's next?

Why study functional programming? 1. Functional languages teach you that programming transcends programming in a language (assuming you you have only programmed in imperative languages) 2. Functional languages predict the future 3. (Functional languages are sometimes used in industry) 4. Functional languages are elegant

Functional languages in the real world Java 8 F#, C# 3.0, LINQ Scala Haskell Erlang OCaml https://ocaml.org/learn/companies.html...but Cornell CS (et al.) require functional programming for your education, not to get you a job

Albert Einstein "Education is what remains after one has forgotten everything one learned in school." 1879-1955

Why study functional programming? 1. Functional languages teach you that programming transcends programming in a language (assuming you you have only programmed in imperative languages) 2. Functional languages predict the future 3. (Functional languages are sometimes used in industry) 4. Functional languages are elegant

Elegant

Elegant Beautiful

Do aesthetics matter? YES! Who reads code? Machines Humans Elegant code is easier to read and maintain Elegant code might (not) be easier to write

OCaml A pretty good language for writing beautiful programs O = Objective, Caml=not important ML is a family of languages; originally the meta-language for a tool

OCaml is awesome because of Immutable programming Variable s values cannot destructively be changed; makes reasoning about program easier! Algebraic datatypes and pattern matching Makes definition and manipulation of complex data structures easy to express First-class functions Functions can be passed around like ordinary values Static type-checking Reduce number of run-time errors Automatic type inference No burden to write down types of every single variable Parametric polymorphism Enables construction of abstractions that work across many data types Garbage collection Automated memory management eliminates many run-time errors

A GLIMPSE OF OCAML...

LOGISTICS

Course website http://www.cs.cornell.edu/courses/cs3110/2015fa/ Full syllabus (required reading) Lecture slides Typically go live within 24 hours after lecture Supplement, do not replace, attendance Recitation notes

Course staff Instructor: Michael Clarkson PhD 2010 Cornell University Research areas: security and programming languages I go by Prof. Clarkson in this course Recitation instructor: Mike George PhD ABD Cornell University TAs and consultants: 46 at last count Course administrator ( head TA ): Remy Jette (rcj57)

Course meetings Lectures: TR 10:10-11:00 am attendance is semi-mandatory, about 1% of grade, measured by i>clicker go buy an i>clicker and bring it on Thursday Recitations: mostly MW Attendance is expected TR sections are effectively MW delayed one day You may attend any, regardless of registration, subject to room capacity; please pick one and stick with it bring your laptop with OCaml installed Consulting: coverage nearly every day

Email If it's about content, post a message on Piazza Messages restricted only to me probably will get lost If it's about your own personal logistics, send email to cs3110-instructors-l@cornell.edu But better than that...come talk to me in person!

Academic integrity You are bound by the Cornell Code of Academic Integrity, the CS Department Code of Academic Integrity, and the CS 1110 Explanation of Academic Integrity All linked from course website You are responsible for understanding them I use MOSS to detect plagiarism; it works If you have a question about what is or is not allowed, please ask If you fear you have committed a violation, tell me before grading commences

Enrollment The course is at fire-code capacity I cannot add any students You will have to wait until someone drops No auditors allowed this semester CS 3110 will be taught in the spring and historically is never full

Your TODO list for tonight 1. read the syllabus 2. buy an i>clicker 3. login to CMS and Piazza linked from course website trouble? contact course administrator with your full name and NetID 4. install OCaml we provide a virtual machine on course website will be used in recitation tomorrow: download tonight trouble? post on Piazza or see a consultant

Upcoming events [Tue-Thur pm] Drop by my office in the afternoon if you need something immediately [Wednesday] Recitations begin (none today) [Wednesday pm] Consulting hours start; check calendar on course website for times and places [Thursday am] i>clickers start in lecture why are you still here? Get to work! J THIS IS 3110