Programming Languages

Slides:



Advertisements
Similar presentations
Introduction to CS170. CS170 has multiple sections Each section has its own class websites URLs for different sections: Section 000:
Advertisements

Intro to CIT 594
1 CS 425 / CS 625 Software Engineering Fall 2007 Course Syllabus August 27, 2007.
CSC 171 – FALL 2004 COMPUTER PROGRAMMING LECTURE 0 ADMINISTRATION.
ICE1341 Programming Languages Spring 2005 Lecture #3 Lecture #3 In-Young Ko iko.AT. icu.ac.kr iko.AT. icu.ac.kr Information and Communications University.
Intro to CIT 594
Computer Science 102 Data Structures and Algorithms V Fall 2009 Lecture 1: administrative details Professor: Evan Korth New York University 1.
Foundations of Programming Languages – Course Overview Xinyu Feng Acknowledgments: some slides taken or adapted from lecture notes of Stanford CS242
Programming Languages and Design Lecture 1 Introduction to Programming Languages Instructor: Li Ma Department of Computer Science Texas Southern University,
Lecture 1 Page 1 CS 111 Summer 2015 Introduction CS 111 Operating System Principles.
EECE 310 Software Engineering Lecture 0: Course Orientation.
Programming Languages –14 David Watt (Glasgow) Steven Wong (Singapore) Moodle : Computing Science → Level 3 → Programming Languages 3 © 2012 David.
Programming Languages
CNS 4450 Syllabus. Context Language is a tool of thought. We rarely think without words. In solving problems by computer, we eventually get to the point.
Computer Science 102 Data Structures and Algorithms CSCI-UA.0102 Fall 2012 Lecture 1: administrative details Professor: Evan Korth New York University.
INF 212 ANALYSIS OF PROG. LANGS LECTURE 1 Instructors: Crista Lopes Copyright © Instructors.
Introduction to computers and programming Instructor: Alex Iskold.
Programming Languages John Mitchell CS 242 Course web site:
Intro to CIT 594
Data Structures and Algorithms in Java AlaaEddin 2012.
Course Information CSE 2031 Fall Instructor U. T. Nguyen /new-yen/ Office: CSEB Office hours:  Tuesday,
Course Information CSE 2031 Fall Instructor U.T. Nguyen Office: CSE Home page:
Programming Languages John Mitchell CS 242 Course web site:
Programming Languages John Mitchell CS 242 Course web site:
Course Information EECS 2031 Fall Instructor Uyen Trang (U.T.) Nguyen Office: LAS Office hours: 
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
Programming Languages
Computer Network Fundamentals CNT4007C
Course Information EECS 2031 – Section A Fall 2017.
CS101 Computer Programming I
CSc 020: Programming Concepts and Methodology II
INF 212 Analysis of Prog. Langs Final Lecture
Types for Programs and Proofs
Final exam: Wednesday, March 20, 2:30pm
Computer Networks CNT5106C
Programming Language Design Concepts
March 27 – Course introductions; Adts; Stacks and Queues
课程名 编译原理 Compiling Techniques
Computer Science 102 Data Structures CSCI-UA
September 27 – Course introductions; Adts; Stacks and Queues
Welcome to COE212: Engineering Programming
Andy Wang Object Oriented Programming in C++ COP 3330
High Level Programming Languages
Foundations of Programming Languages – Course Overview
EECE 310 Software Engineering
Programming Languages
CSCD 330 Network Programming Spring
Foundations of Programming Languages – Course Overview
Introduction CSE 373 Data Structures.
Organization of Programming Languages
Systems Programming Intro
Intro to CIT 594
Principles of Programming Languages
CS510 Concurrent Systems Jonathan Walpole.
CS 425 / CS 625 Software Engineering
Course Information EECS 2031 Fall 2016.
CSCD 330 Network Programming Spring
Course Overview CS 4640 Programming Languages for Web Applications
Introduction to the course
강의 내용 및 방법 접근방법 리포트 시험 Lambda Calculus, Proof of Correctness
Intro to CIT 594
Intro to CIT 594
Lecture 1a- Introduction
CS Problem Solving and Object Oriented Programming Spring 2019
CSCE156: Introduction to Computer Science II
Course Overview CS 4640 Programming Languages for Web Applications
Term Dr Abdelhafid Bouhraoua
Course Introduction Data Visualization & Exploration – COMPSCI 590
Course overview Lecture : Juan Carlos Niebles and Ranjay Krishna
Presentation transcript:

Programming Languages CS 242 Programming Languages John Mitchell Course web site: http://www.stanford.edu/class/cs242/

Some Course Goals Programming Language Concepts Critical thought A language is a “conceptual universe” (Perlis) Framework for problem-solving Useful concepts and programming methods Understand the languages you use, by comparison Appreciate history, diversity of ideas in programming Be prepared for new programming methods, paradigms, tools Critical thought Identify properties of language, not syntax or sales pitch Language and implementation Every convenience has its cost Recognize the cost of presenting an abstract view of machine Understand trade-offs in programming language design

Language goals and trade-offs Architect Programmer Programming Language Tester Compiler, Runtime environ-ment DiagnosticTools

Value of Language Concepts Parable I started programming in 1970’s Dominant language was Fortran; no recursive functions My algorithms and data structure instructor said: Recursion is a good idea even though inefficient You can use idea in Fortran by storing stack in array Today: recursive functions everywhere Moral Futuristic ideas may be useful problem-solving methods now, and may be part of languages you use in the future Current examples Function passing: pass functions in C by building your own closures, as in STL “function objects” Continuations: used in web languages for workflow processing Monads: programming technique from functional programming Concurrency

Languages in common use Compiled by François Labelle from statistics on open-source projects at SourceForge

What’s new in programming languages Commercial trend over past 5 years Increasing use of type-safe languages: Java, C#, … Scripting languages, other languages for web applications Teaching trends Java replaces C as most common intro language Less emphasis on how data, control represented in machine Research and development trends Modularity Java, C++: standardization of new module features Program analysis Automated error detection, programming env, compilation Isolation and security Sandboxing, language-based security, … Web 2.0 Increasing client-side functionality, mashup isolation problems

What’s worth studying? Dominant languages and paradigms C, C++, Java Imperative and Object-oriented languages Explosion of programming technologies for the web Important implementation ideas Performance challenges Concurrency Design tradeoffs Concepts that research community is exploring for new programming languages and tools

Joining us this year Kathleen Fisher Research interests PADS language for specifying physical data representations Hancock: C-based, domain-specific programming language designed to facilitate extracting useful information from massive data streams Professional activities Chair of SIGPLAN, Editorial Board of JFP, … Home page http://www.research.att.com/info/kfisher

First half of course (subject to change) JavaScript (1 lecture) Current language illustrating features covered in course Conventional prog. language concepts (4 lectures) Block structure and memory management (1 lecture) ML, Haskell (1 lecture) Control constructs (1 lecture) Types and type checking/inference (1 lecture) Programming techniques from the future (3 lectures) Generalized Abstract Data Types (1 lecture) Type classes (1 lecture) Monads (1 lecture) Theoretical foundations (1 lecture) Operational semantics, via JavaScript --------------------- Midterm Exam ------------------------

Second half of course Modularity, data abstraction, objects (1 lecture) Object-oriented languages (5 lectures) Smalltalk and Self (1.5 lectures) C++ (1.5 lectures) Java (2 lectures) Security (1 lecture) Concurrency (2 lectures) Conclusions and review (1 lecture) --------------------- Final Exam ------------------------

General suggestions Read ahead Some details are only in HW and reading Scope of course defined by lectures, reading assignments, and homework There is something difficult about this course May be hard to understand homework questions Thought questions: cannot run and debug May sound like there is no right answer, but some answers are better than others Many of you may be used to overlooking language problems, so it takes a few weeks to see the issues

Course Logistics Homework and Exams Homework grader? HW handed out and due on Wednesdays Midterm Wed Oct 22 7-9PM, Final Wed Dec 10, 12:15-3:15 PM Honor Code, Collaboration Policy Homework grader? Send email to cs242@cs.stanford.edu email addr TA’s, Office hours, Email policy, … Section Friday afternoons, 2:15-3:05 in Gates B03 Optional discussion and review; no new material Reading material Book available in bookstore (Concepts in Programming Lang.) Supplementary reading on web See web site…

Questions?