A history of compilers
|
|
|
- Edgar Roy Lambert
- 10 years ago
- Views:
Transcription
1 A history of compilers Peter Sestoft Dansk Datahistorisk Forening v 1.0 1
2 The speaker MSc 1988 computer science and mathematics and PhD 1991, DIKU, Copenhagen University KU, DTU, KVL and ITU; and AT&T Bell Labs, Microsoft Research UK, Harvard University Programming languages, software development,... Open source software Moscow ML implementation, 1994 C5 Generic Collection Library, with Niels Kokholm, & &
3 Outline What is a compiler? A history of the history of... Early autoprogramming systems The FORTRAN I compiler Some Algol compilers Lexing and parsing Code generation Intermediate languages Optimization Flow analysis Type systems 3
4 What is a compiler (today)? for (int i=0; i<n; i++) sum += sqrt(arr[i]); C language source program clang LBB0_1: movl -28(%rbp), %eax // i movl -4(%rbp), %ecx // n cmpl %ecx, %eax jge LBB0_4 // if i >= n, return movslq -28(%rbp), %rax // i movq -16(%rbp), %rcx // address of arr[0] movsd (%rcx,%rax,8), %xmm0 // arr[i] callq _sqrt // sqrt movsd -24(%rbp), %xmm1 // sum addsd %xmm0, %xmm1 // sum +... movsd %xmm1, -24(%rbp) // sum =... movl -28(%rbp), %eax // i addl $1, %eax // i + 1 movl %eax, -28(%rbp) // i =... jmp LBB0_1 // loop again x86 machine code From Aho et al 4
5 A compiler in context Source language Syntax Types, semantics Libraries Intermediate lang. Instructions Types, semantics Libraries Focus Compiler Lexing, parsing Checking, types Optimization Code generation Dev. environment Editors Syntax highlighting Debuggers Linkers Runtime support Memory management Libraries Debuggers Hardware Instruction set Memory hierarchy Peripherals Operating system Process management Kernel functions 5
6 Conceptual phases of a compiler From Aho et al 6
7 Why "compiler" not "translator"? Hopper: A Programmer's Glossary, 1 May 1954: Jones:1954:ASurvey Hopper's A-2 compiler collected & inlined subroutines In modern terminology: macro expansion Later use: "algebraic compiler" to mean translator 7
8 A history of the history of... Bauer: Historical remarks on compiler construction (1974) Many important references to early papers USSR addendum by Ershov in 2 nd printing (1976) Opening quote: Bauer:1974:HistoricalRemarks Ershov:1976:Addendum 8
9 Some older histories of... Knuth:1962:AHistory Knuth: A history of writing compilers (1962) Few references, names and dates, mostly US: Knuth later regretted this attitude Jones:1954:ASurvey Jones: A survey of automatic coding techniques for digital computers, MIT 1954! Randell and Russell 1964, par. 1.2 and 1.3 Rosen: Programming Systems and Languages, 1964 and 1972 Knuth:1977:TheEarly Randell:1964:Algol60Implementation Rosen:1964:ProgrammingSystems Rosen:1972:ProgrammingSystems 9
10 Knuth 1977: The early development... Knuth:1977:TheEarly X=int, F=float, S=scaled A... F = much... little 10
11 Other substantial secondary sources Naur: The replies to the AB14 questionnaire Survey of Algol compiler construction June 1962 Naur:1962:Questionnaire Naur:1962:TheReplies Bromberg: Survey of programming languages and processors (March 1963) Bromberg:1963:SurveyOf 11
12 Early interpreters and compilers 12
13 Knuth's B 205 Algol 58 compiler Developed June-Sep 1960, at age 22 Idiosyncratic documentation: Knuth:1960:TheInternals Waychoff:1979:StoriesAbout Knuth:2007:OralHistory No description of runtime state or its invariants 13
14 Problems and solutions Lexing and parsing: from text to internal representation Arithmetic operators, precedence, parentheses Compilation of expressions To postfix, reverse Polish form Storage allocation Runtime state invariants, code to maintain them Optimization How to generate efficient code Flow analysis How discover program structure and invariants 14
15 History: lexing and parsing Initially ad hoc Table-driven/automata methods Regular expressions, context-free grammars Finite state automata and pushdown automata Knuth LR parsing 1965 Gries operator grammars 1968 Lexer and parser generator tools Lex (Lesk 1975) and Yacc (Johnson 1975) LR dominated for a while LL back in fashion: Antlr, Coco/R, parser combinators, packrat parsers Samelson:1960:SequentialFormula Irons:1961:ASyntax Naur:1963:TheDesign1 Knuth:1965:OnThe Gries:1968:UseOf 15
16 Lewis, Rosenkrantz, Stearns: Compiler design theory, pages about lexing and parsing 30 pages not about lexing and parsing Historically, too much emphasis on parsing? Because it was formalizable and respectable? But also beautiful relations to complexity and computability... 16
17 History: compilation of expressions Rutishauser 1952 (unimpl.) Translating arithmetic expressions to 3-addr code Infix operators, precedence, parentheses Repeated scanning and simplification Böhm 1952 (not impl.) Similar also at ETH Zürich Fortran I, 1957 Baroque but simple treatment of precedence (Böhm &) Complex, multiple scans, both left-right and right-left Samelson and Bauer 1960 One scan, using a stack ("cellar") at translation time Floyd 1961 Rutishauser:1952:AutomatischeRechenplanfertigung Knuth:1977:TheEarly Sheridan:1959:TheArithmetic Samelson:1960:SequentialFormula Floyd:1961:AnAlgorithm One left scan, one right scan, optimized code 17
18 History: Compilation techniques Single-pass table-driven with stacks Bauer and Samelson for Alcor Dijkstra 1960, Algol for X-1 Randell 1962, Whetstone Algol Single-pass recursive descent Hoare 1962, one procedure per language construct Multi-pass ad hoc Fortran I, 6 passes Multi-pass table-driven with stacks Naur 1962 GIER Algol, 9 passes Hawkins 1962 Kidsgrove Algol General syntax-directed table-driven Irons 1961 Algol for CDC 1604 Dijkstra:1961:Algol60Translation Randell:1964:WhetstoneAlgol Hoare:1962:ReportOn Backus:1957:TheFortran Naur:1963:TheDesign2 Irons:1961:ASyntax 18
19 Multi-pass compilation is still used Good for small-memory systems (eg GIER) Still used, now for separation of concerns: 21 internal passes of the Scala compiler (2013) namerfactory typerfactory superaccessors pickler refchecks liftcode uncurry tailcalls explicitouter erasure lambdalift constructors flatten mixer cleanup genicode inliner inlineexceptionhandlers closureelimination deadcode genjvm 19
20 History: Run-time organization Early papers focus on translation Runtime data managent is trivial, eg. Fortran I Algol: runtime storage allocation is essential Dijkstra: Algol for X-1 (1960) Stack of procedure activation records Display, to access variables of enclosing scopes Also focus of Naur's Gier Algol papers Dijkstra:1960:RecursiveProgramming Naur:1963:TheDesign1 Naur:1963:TheDesign2 Design a runtime state structure (invariant) Compiler should generate code that Can rely on the runtime state invariant Must preserve the runtime state invariant 20
21 Ekman and Fröberg 1972, p
22 History: Target architectures EDSAC, IAS machine, BESK No index register, so self-modifying code for arrays Subtle, and makes manual code relocation painful Index registers, IBM 704, DASK,... Simpler and faster code, position-independent IBM 704 at-least-once loops impacts Fortran DO Stack machines Hamblin:1962:TranslationTo Dijkstra:1960:RecursiveProgramming Barton:1961:ANew Conceptual: Samelson, Hamblin, Dijkstra, Barton Hardware: Burroughs B5000, KDF9 (arith, return) Compile to reverse Polish by post-order traversal Java and.net/cli intermediate languages 22
23 History: Intermediate languages Strong:1958:TheProblem Strong: The problem of..., February
24 Everything old is new again Chow: Intermediate representation, CACM Chow:2013:IntermediateRepresentation December
25 UNCOL is finally coming true Java Virtual Machine, 1994 Developed as bytecode for Java only Yet used for Scala, Clojure, Jython, Ceylon, JRuby... Runtime system, libraries, on many CPUs and OSs.NET Common Language Infrastructure, 1999 C#, VB.NET, F#, JScript, Eiffel, COBOL, IronPython JavaScript/EcmaScript, 1994 For browser scripting, thus on all user devices Ceylon, Dart, Typescript, F#,... LLVM = Low-Level Virtual Machine, 2003 Static single assignment compiler-internal form Clang C/C++/Objective-C, Nvidia CUDA, Mono,... 25
26 What does a C# compiler do for (int i=0; i<n; i++) sum += sqrt(arr[i]); C# language source program.net/cli bytecode: Stack-based Loadtime checks, types, local stack Runtime checks, array bounds, null references,... Dynamic compilation to real machine code csc /o 0b stloc.1 // i = 0 0c br.s 1d // goto 1d 0e ldloc.0 // sum 0f ldarg.1 // arr 10 ldloc.1 // i 11 ldelem.r8 // arr[i] 12 call Math::Sqrt // sqrt 17 add // sum stloc.0 // sum 19 ldloc.1 // i 1a ldc.i4.1 // 1 1b add // i + 1 1c stloc.1 // i =... 1d ldloc.1 // i 1e ldarg.0 // n 1f blt.s 0e // if i<n loop.net/cli bytecode runtime system's just-in-time compiler 19 xorl %ebx,%ebx // i = 0 1b jmp 3a // goto 3a 1d leal 0x00(%ebp),%ebp 20 fldl 0xec(%ebp) // sum 23 cmpl %ebx,0x0c(%edi) // array index check 26 jbe 49 // if outofbounds, throw 2c leal 0x10(%edi,%ebx,8),%eax // 30 fldl (%eax) // arr[i] 32 fsqrt // sqrt 34 faddp %st,%st(1) // sum fstpl 0xec(%ebp) // sum = incl %ebx // i++ 3a cmpl %esi,%ebx 3c jl 20 // if i<n, loop x86 machine code 26
27 History: Type checking Naur GIER Algol 1965 "pseudoevaluation of the expressions" "like a run-time evaluation but works with descriptions of the types and kinds of operands instead of with values" Damas and Milner, ML 1982 Inference of polymorphic type schemes Generalization and specialization Naur:1965:CheckingOf Damas:1982:PrincipalTypeschemes Unification (Robinson) to solve type equations Has influenced Haskell, C#, F#, Scala,... 27
28 Compiler quality attributes Produces fast target code Produces target code fast Checks source code syntax Checks source code types and consistency Provides precise and clear error messages Reports as many errors as possible Is itself free of errors Does not report spurious errors Provides frugal compilation or recompilation or separate compilation 28
29 History: Diagnostics EDSAC (Wilkes 1951) Tracing and post-mortem dumps GIER Algol Comprehensive compiler error messages Not a focus in eg Hoare's Elliot Algol compiler "GIER... had an excellent compiler-cumoperating system" (Sanders in HiNC 2003) "the very successful Algol compiler... for the GIER computer" (Randell & Russell 1964) (Presumably also important that it was thoroughly tested, Naur:1963:TheDesign2 page 163) 29
30 History: Bootstrapping Writing a compiler in the language it compiles Runcible 1959 Knuth:1959:Runcible Runcible expression compilation chart, in Runcible Huskey:1959:Neliac Neliac compiler written in Neliac 1959 and self-compilation as correctness check Masterson:1960:CompilationFor Thanks to Robert Glück for references 30
31 C compiler optimizations for (int i=0; i<n; i++) sum += sqrt(arr[i]); C language Register allocation (sum, i, n, arr) Inlining of functions Index calculations Iteration variable elimination (i) clang LBB0_1: movl -28(%rbp), %eax // i movl -4(%rbp), %ecx // n cmpl %ecx, %eax jge LBB0_4 // if i >= n, return movslq -28(%rbp), %rax // i movq -16(%rbp), %rcx // address of arr[0] movsd (%rcx,%rax,8), %xmm0 // arr[i] callq _sqrt // sqrt movsd -24(%rbp), %xmm1 // sum addsd %xmm0, %xmm1 // sum +... movsd %xmm1, -24(%rbp) // sum =... movl -28(%rbp), %eax // i addl $1, %eax // i + 1 movl %eax, -28(%rbp) // i =... jmp LBB0_1 // loop again x86 machine code LBB0_2: movsd (%rsi), %xmm1 // *p same as arr[n-i] sqrtsd %xmm1, %xmm1 // sqrt addsd %xmm1, %xmm0 // sum +=... addq $8, %rsi // p++ decq %rax // i-- jne LBB0_2 // if i!=0 loop again 31
32 History: Optimization Fortran I in 1957 has common subexpression elimination fast index computations: reduction in strength clever allocation of index registers constant folding Backus:1957:TheFortran Samelson & Bauer algorithm for fast index computations (red.stren.) Samelson:1960:SequentialFormula Allen 1969, algorithms for: basic blocks, flow graph of strongly conn. comps. constant folding common subexpression elimination invariant code moving reduction in strength test replacement (for loops after red. strength) Allen:1969:ProgramOptimization 32
33 History: Flow analysis Fortran I was amazingly ambitious Control flow analysis graph with edge frequencies Monte Carlo simulation at compiletime based on FREQUENCY statements Allen:1970:ControlFlow Allen, Cocke 1970 Control flow graph, dominator, interval, reducible graph,... Left out of Bauer:1974:HistoricalRemarks Cousot and Cousot 1977 Abstract interpretation Based on formal semantics Systematic approximation via Galois connections Termination via widening operators Backus:1957:TheFortran 33
34 Some topics not covered at all Compiler generation, compiler-compilers Adaptive compilation just-in-time compilers for Java,.NET/CLI Compilation techniques for lazy functional languages: Haskell object-oriented languages: Java, C# dynamic languages: Smalltalk, Javascript (v8) extensible languages: Lua Compilation for parallel architectures Continuation-based compilation... 34
35 A thought on hardware and language developments First languages were made to resemble machines Then Algol made the opposite happen (stacks) Today: multicore, manycore, massive parallelism Multiple levels memory and caches Complex memory consistency models Computation is cheap, moving data is expensive Still too much focus on scientific computing? (exascale) Are future machines designed with enough input from programming language design? What are the language features suitable for parallelism and concurrency? 35
36 Secondary sources Interesting reading Knuth:1977:TheEarly Bauer:1974:HistoricalRemarks Ershov:1976:Addendum Primary sources Backus:1957:TheFortran Samelson:1960:SequentialFormula Dijkstra:1960:RecursiveProgramming Hoare:1962:ReportOn Naur:1963:TheDesign1 Naur:1965:CheckingOf Randell:1964:Algol60Implementation 36
37 A collection of sources 37
38 Jeg har ikke kunnet finde... Information om en Algol-oversætter til SMIL af Ekman og Robertson, Lund Information om en Algol-oversætter til Ferranti Mercury fra NDRE = Forsvarets Forskningsinstitut, Oslo, formentlig O.-J. Dahl 38
A history of (Nordic) compilers and autocodes
A history of (Nordic) compilers and autocodes Peter Sestoft [email protected] 2014-10-13 Copenhagen Tech Polyglot Meetup 1 The speaker MSc 1988 computer science and mathematics and PhD 1991, DIKU, Copenhagen
Language Processing Systems
Language Processing Systems Evaluation Active sheets 10 % Exercise reports 30 % Midterm Exam 20 % Final Exam 40 % Contact Send e-mail to [email protected] Course materials at www.u-aizu.ac.jp/~hamada/education.html
How to make the computer understand? Lecture 15: Putting it all together. Example (Output assembly code) Example (input program) Anatomy of a Computer
How to make the computer understand? Fall 2005 Lecture 15: Putting it all together From parsing to code generation Write a program using a programming language Microprocessors talk in assembly language
Programming Language Concepts for Software Developers
Programming Language Concepts for Software Developers Peter Sestoft IT University of Copenhagen, Denmark [email protected] Abstract This note describes and motivates our current plans for an undergraduate
Programming Language Pragmatics
Programming Language Pragmatics THIRD EDITION Michael L. Scott Department of Computer Science University of Rochester ^ШШШШШ AMSTERDAM BOSTON HEIDELBERG LONDON, '-*i» ЩЛ< ^ ' m H NEW YORK «OXFORD «PARIS»SAN
CSCI 3136 Principles of Programming Languages
CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University Winter 2013 CSCI 3136 Principles of Programming Languages Faculty of Computer Science Dalhousie University
Lecture 1: Introduction
Programming Languages Lecture 1: Introduction Benjamin J. Keller Department of Computer Science, Virginia Tech Programming Languages Lecture 1 Introduction 2 Lecture Outline Preview History of Programming
Division of Mathematical Sciences
Division of Mathematical Sciences Chair: Mohammad Ladan, Ph.D. The Division of Mathematical Sciences at Haigazian University includes Computer Science and Mathematics. The Bachelor of Science (B.S.) degree
Principles of Programming Languages Topic: Introduction Professor Louis Steinberg
Principles of Programming Languages Topic: Introduction Professor Louis Steinberg CS 314, LS,LTM: L1: Introduction 1 Contacts Prof. Louis Steinberg lou @ cs.rutgers.edu x5-3581 401 Hill TA: to be announced
Introduction. Compiler Design CSE 504. Overview. Programming problems are easier to solve in high-level languages
Introduction Compiler esign CSE 504 1 Overview 2 3 Phases of Translation ast modifled: Mon Jan 28 2013 at 17:19:57 EST Version: 1.5 23:45:54 2013/01/28 Compiled at 11:48 on 2015/01/28 Compiler esign Introduction
Programming Languages
Programming Languages In the beginning To use a computer, you needed to know how to program it. Today People no longer need to know how to program in order to use the computer. To see how this was accomplished,
AP Computer Science AB Syllabus 1
AP Computer Science AB Syllabus 1 Course Resources Java Software Solutions for AP Computer Science, J. Lewis, W. Loftus, and C. Cocking, First Edition, 2004, Prentice Hall. Video: Sorting Out Sorting,
CSC 272 - Software II: Principles of Programming Languages
CSC 272 - Software II: Principles of Programming Languages Lecture 1 - An Introduction What is a Programming Language? A programming language is a notational system for describing computation in machine-readable
Compiler and Language Processing Tools
Compiler and Language Processing Tools Summer Term 2011 Prof. Dr. Arnd Poetzsch-Heffter Software Technology Group TU Kaiserslautern Prof. Dr. Arnd Poetzsch-Heffter Compilers 1 Outline 1. Language Processing
Programming Languages
Programming Languages Qing Yi Course web site: www.cs.utsa.edu/~qingyi/cs3723 cs3723 1 A little about myself Qing Yi Ph.D. Rice University, USA. Assistant Professor, Department of Computer Science Office:
1/20/2016 INTRODUCTION
INTRODUCTION 1 Programming languages have common concepts that are seen in all languages This course will discuss and illustrate these common concepts: Syntax Names Types Semantics Memory Management We
Functional Programming
FP 2005 1.1 3 Functional Programming WOLFRAM KAHL [email protected] Department of Computing and Software McMaster University FP 2005 1.2 4 What Kinds of Programming Languages are There? Imperative telling
Advanced compiler construction. General course information. Teacher & assistant. Course goals. Evaluation. Grading scheme. Michel Schinz 2007 03 16
Advanced compiler construction Michel Schinz 2007 03 16 General course information Teacher & assistant Course goals Teacher: Michel Schinz [email protected] Assistant: Iulian Dragos INR 321, 368 64
Lecture 7: Machine-Level Programming I: Basics Mohamed Zahran (aka Z) [email protected] http://www.mzahran.com
CSCI-UA.0201-003 Computer Systems Organization Lecture 7: Machine-Level Programming I: Basics Mohamed Zahran (aka Z) [email protected] http://www.mzahran.com Some slides adapted (and slightly modified)
Chapter 1. Dr. Chris Irwin Davis Email: [email protected] Phone: (972) 883-3574 Office: ECSS 4.705. CS-4337 Organization of Programming Languages
Chapter 1 CS-4337 Organization of Programming Languages Dr. Chris Irwin Davis Email: [email protected] Phone: (972) 883-3574 Office: ECSS 4.705 Chapter 1 Topics Reasons for Studying Concepts of Programming
CSE 307: Principles of Programming Languages
Course Organization Introduction CSE 307: Principles of Programming Languages Spring 2015 R. Sekar Course Organization Introduction 1 / 34 Topics 1. Course Organization Info and Support Course Description
Instruction Set Architecture
CS:APP Chapter 4 Computer Architecture Instruction Set Architecture Randal E. Bryant adapted by Jason Fritts http://csapp.cs.cmu.edu CS:APP2e Hardware Architecture - using Y86 ISA For learning aspects
Compiler I: Syntax Analysis Human Thought
Course map Compiler I: Syntax Analysis Human Thought Abstract design Chapters 9, 12 H.L. Language & Operating Sys. Compiler Chapters 10-11 Virtual Machine Software hierarchy Translator Chapters 7-8 Assembly
What is a programming language?
Overview Introduction Motivation Why study programming languages? Some key concepts What is a programming language? Artificial language" Computers" Programs" Syntax" Semantics" What is a programming language?...there
Applications to Computational Financial and GPU Computing. May 16th. Dr. Daniel Egloff +41 44 520 01 17 +41 79 430 03 61
F# Applications to Computational Financial and GPU Computing May 16th Dr. Daniel Egloff +41 44 520 01 17 +41 79 430 03 61 Today! Why care about F#? Just another fashion?! Three success stories! How Alea.cuBase
Semester Review. CSC 301, Fall 2015
Semester Review CSC 301, Fall 2015 Programming Language Classes There are many different programming language classes, but four classes or paradigms stand out:! Imperative Languages! assignment and iteration!
Language Evaluation Criteria. Evaluation Criteria: Readability. Evaluation Criteria: Writability. ICOM 4036 Programming Languages
ICOM 4036 Programming Languages Preliminaries Dr. Amirhossein Chinaei Dept. of Electrical & Computer Engineering UPRM Spring 2010 Language Evaluation Criteria Readability: the ease with which programs
Java 6 'th. Concepts INTERNATIONAL STUDENT VERSION. edition
Java 6 'th edition Concepts INTERNATIONAL STUDENT VERSION CONTENTS PREFACE vii SPECIAL FEATURES xxviii chapter i INTRODUCTION 1 1.1 What Is Programming? 2 J.2 The Anatomy of a Computer 3 1.3 Translating
Habanero Extreme Scale Software Research Project
Habanero Extreme Scale Software Research Project Comp215: Java Method Dispatch Zoran Budimlić (Rice University) Always remember that you are absolutely unique. Just like everyone else. - Margaret Mead
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages. Nicki Dell Spring 2014
CSE 373: Data Structure & Algorithms Lecture 25: Programming Languages Nicki Dell Spring 2014 What is a Programming Language? A set of symbols and associated tools that translate (if necessary) collections
02 B The Java Virtual Machine
02 B The Java Virtual Machine CS1102S: Data Structures and Algorithms Martin Henz January 22, 2010 Generated on Friday 22 nd January, 2010, 09:46 CS1102S: Data Structures and Algorithms 02 B The Java Virtual
Interpreters and virtual machines. Interpreters. Interpreters. Why interpreters? Tree-based interpreters. Text-based interpreters
Interpreters and virtual machines Michel Schinz 2007 03 23 Interpreters Interpreters Why interpreters? An interpreter is a program that executes another program, represented as some kind of data-structure.
Implementing Programming Languages. Aarne Ranta
Implementing Programming Languages Aarne Ranta February 6, 2012 2 Contents 1 What is a programming language implementation 11 1.1 From language to binary..................... 11 1.2 Levels of languages........................
A Programming Language Where the Syntax and Semantics Are Mutable at Runtime
DEPARTMENT OF COMPUTER SCIENCE A Programming Language Where the Syntax and Semantics Are Mutable at Runtime Christopher Graham Seaton A dissertation submitted to the University of Bristol in accordance
2) Write in detail the issues in the design of code generator.
COMPUTER SCIENCE AND ENGINEERING VI SEM CSE Principles of Compiler Design Unit-IV Question and answers UNIT IV CODE GENERATION 9 Issues in the design of code generator The target machine Runtime Storage
Object-Oriented Software Specification in Programming Language Design and Implementation
Object-Oriented Software Specification in Programming Language Design and Implementation Barrett R. Bryant and Viswanathan Vaidyanathan Department of Computer and Information Sciences University of Alabama
Tachyon: a Meta-circular Optimizing JavaScript Virtual Machine
Tachyon: a Meta-circular Optimizing JavaScript Virtual Machine Maxime Chevalier-Boisvert Erick Lavoie Marc Feeley Bruno Dufour {chevalma, lavoeric, feeley, dufour}@iro.umontreal.ca DIRO - Université de
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science. Unit of Study / Textbook Correlation
Thomas Jefferson High School for Science and Technology Program of Studies Foundations of Computer Science updated 03/08/2012 Unit 1: JKarel 8 weeks http://www.fcps.edu/is/pos/documents/hs/compsci.htm
Datavetenskapligt Program (kandidat) Computer Science Programme (master)
Datavetenskapligt Program (kandidat) Computer Science Programme (master) Wolfgang Ahrendt Director Datavetenskap (BSc), Computer Science (MSc) D&IT Göteborg University, 30/01/2009 Part I D&IT: Computer
Chapter 13: Program Development and Programming Languages
15 th Edition Understanding Computers Today and Tomorrow Comprehensive Chapter 13: Program Development and Programming Languages Deborah Morley Charles S. Parker Copyright 2015 Cengage Learning Learning
Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students
Eastern Washington University Department of Computer Science Questionnaire for Prospective Masters in Computer Science Students I. Personal Information Name: Last First M.I. Mailing Address: Permanent
1.1 WHAT IS A PROGRAMMING LANGUAGE?
1 INTRODUCTION 1.1 What is a Programming Language? 1.2 Abstractions in Programming Languages 1.3 Computational Paradigms 1.4 Language Definition 1.5 Language Translation 1.6 Language Design How we communicate
Machine-Level Programming II: Arithmetic & Control
Mellon Machine-Level Programming II: Arithmetic & Control 15-213 / 18-213: Introduction to Computer Systems 6 th Lecture, Jan 29, 2015 Instructors: Seth Copen Goldstein, Franz Franchetti, Greg Kesden 1
Chapter 6: Programming Languages
Chapter 6: Programming Languages Computer Science: An Overview Eleventh Edition by J. Glenn Brookshear Copyright 2012 Pearson Education, Inc. Chapter 6: Programming Languages 6.1 Historical Perspective
Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming
Characteristics of Java (Optional) Y. Daniel Liang Supplement for Introduction to Java Programming Java has become enormously popular. Java s rapid rise and wide acceptance can be traced to its design
2. Advance Certificate Course in Information Technology
Introduction: 2. Advance Certificate Course in Information Technology In the modern world, information is power. Acquiring information, storing, updating, processing, sharing, distributing etc. are essentials
HPC Wales Skills Academy Course Catalogue 2015
HPC Wales Skills Academy Course Catalogue 2015 Overview The HPC Wales Skills Academy provides a variety of courses and workshops aimed at building skills in High Performance Computing (HPC). Our courses
Next Generation GPU Architecture Code-named Fermi
Next Generation GPU Architecture Code-named Fermi The Soul of a Supercomputer in the Body of a GPU Why is NVIDIA at Super Computing? Graphics is a throughput problem paint every pixel within frame time
Chapter 13: Program Development and Programming Languages
Understanding Computers Today and Tomorrow 12 th Edition Chapter 13: Program Development and Programming Languages Learning Objectives Understand the differences between structured programming, object-oriented
Instructor Özgür ZEYDAN BEU Dept. of Enve. Eng. http://cevre.beun.edu.tr/zeydan/ CIV 112 Computer Programming Lecture Notes (1)
Instructor Özgür ZEYDAN BEU Dept. of Enve. Eng. http://cevre.beun.edu.tr/zeydan/ CIV 112 Computer Programming Lecture Notes (1) Computer Programming A computer is a programmable machine. This means it
Compilers. Introduction to Compilers. Lecture 1. Spring term. Mick O Donnell: [email protected] Alfonso Ortega: alfonso.ortega@uam.
Compilers Spring term Mick O Donnell: [email protected] Alfonso Ortega: [email protected] Lecture 1 to Compilers 1 Topic 1: What is a Compiler? 3 What is a Compiler? A compiler is a computer
Habanero Extreme Scale Software Research Project
Habanero Extreme Scale Software Research Project Comp215: Evolution of Java Zoran Budimlić (Rice University) The Beginnings Sun Microsystems 1990 - Create a language for delivering programs on small electronic
Compiling Object Oriented Languages. What is an Object-Oriented Programming Language? Implementation: Dynamic Binding
Compiling Object Oriented Languages What is an Object-Oriented Programming Language? Last time Dynamic compilation Today Introduction to compiling object oriented languages What are the issues? Objects
Computer Science. Requirements for the Major (updated 11/13/03)
Computer Science Faculty: Knox Chair; Komagata,, Martinovic, Neff, Sampath, Wolz Faculty from mathematics with joint teaching appointments in computer science: Conjura, Greenbaun, Iannone The computer
Lecture 27 C and Assembly
Ananda Gunawardena Lecture 27 C and Assembly This is a quick introduction to working with x86 assembly. Some of the instructions and register names must be check for latest commands and register names.
Automated Repair of Binary and Assembly Programs for Cooperating Embedded Devices
Automated Repair of Binary and Assembly Programs for Cooperating Embedded Devices Eric Schulte 1 Jonathan DiLorenzo 2 Westley Weimer 2 Stephanie Forrest 1 1 Department of Computer Science University of
Announcements FORTRAN ALGOL COBOL. Simula & Smalltalk. Programming Languages
Announcements Programming Languages! Monday evening GBA section has been shut down " If you were assigned to this section, please find a different section " If you cannot attend a different section, please
Computing Concepts with Java Essentials
2008 AGI-Information Management Consultants May be used for personal purporses only or by libraries associated to dandelon.com network. Computing Concepts with Java Essentials 3rd Edition Cay Horstmann
n Introduction n Art of programming language design n Programming language spectrum n Why study programming languages? n Overview of compilation
Lecture Outline Programming Languages CSCI-4430 & CSCI-6430, Spring 2016 www.cs.rpi.edu/~milanova/csci4430/ Ana Milanova Lally Hall 314, 518 276-6887 [email protected] Office hours: Wednesdays Noon-2pm
CS:APP Chapter 4 Computer Architecture Instruction Set Architecture. CS:APP2e
CS:APP Chapter 4 Computer Architecture Instruction Set Architecture CS:APP2e Instruction Set Architecture Assembly Language View Processor state Registers, memory, Instructions addl, pushl, ret, How instructions
Chapter 15 Functional Programming Languages
Chapter 15 Functional Programming Languages Introduction - The design of the imperative languages is based directly on the von Neumann architecture Efficiency (at least at first) is the primary concern,
PARALLEL JAVASCRIPT. Norm Rubin (NVIDIA) Jin Wang (Georgia School of Technology)
PARALLEL JAVASCRIPT Norm Rubin (NVIDIA) Jin Wang (Georgia School of Technology) JAVASCRIPT Not connected with Java Scheme and self (dressed in c clothing) Lots of design errors (like automatic semicolon
Department of Computer Science
The University of Texas at San Antonio 1 Department of Computer Science The Department of Computer Science offers a Bachelor of Science degree in Computer Science and a Minor in Computer Science. Admission
Functional Programming. Functional Programming Languages. Chapter 14. Introduction
Functional Programming Languages Chapter 14 Introduction Functional programming paradigm History Features and concepts Examples: Lisp ML 1 2 Functional Programming Functional Programming Languages The
1. Overview of the Java Language
1. Overview of the Java Language What Is the Java Technology? Java technology is: A programming language A development environment An application environment A deployment environment It is similar in syntax
TEACHING COMPUTER PROGRAMMING WITH PROGRAM ANIMATION
TEACHING COMPUTER PROGRAMMING WITH PROGRAM ANIMATION Theodore S. Norvell and Michael P. Bruce-Lockhart Electrical and Computer Engineering Faculty of Engineering and Applied Science Memorial University
High-Level Programming Languages. Nell Dale & John Lewis (adaptation by Michael Goldwasser)
High-Level Programming Languages Nell Dale & John Lewis (adaptation by Michael Goldwasser) Low-Level Languages What are disadvantages of low-level languages? (e.g., machine code or assembly code) Programming
General Introduction
Managed Runtime Technology: General Introduction Xiao-Feng Li ([email protected]) 2012-10-10 Agenda Virtual machines Managed runtime systems EE and MM (JIT and GC) Summary 10/10/2012 Managed Runtime
Introduction to Cluster Computing
Introduction to Cluster Computing Brian Vinter [email protected] Overview Introduction Goal/Idea Phases Mandatory Assignments Tools Timeline/Exam General info Introduction Supercomputers are expensive Workstations
Parsing Technology and its role in Legacy Modernization. A Metaware White Paper
Parsing Technology and its role in Legacy Modernization A Metaware White Paper 1 INTRODUCTION In the two last decades there has been an explosion of interest in software tools that can automate key tasks
CSE 130 Programming Language Principles & Paradigms
CSE 130 Programming Language Principles & Paradigms Thomas A. Powell [email protected] Housekeeping Syllabus review Direct class page link http://www.pint.com/classes/cse130 Updated syllabus, notes, homework
Multi-core Programming System Overview
Multi-core Programming System Overview Based on slides from Intel Software College and Multi-Core Programming increasing performance through software multi-threading by Shameem Akhter and Jason Roberts,
COMP 356 Programming Language Structures Notes for Chapter 4 of Concepts of Programming Languages Scanning and Parsing
COMP 356 Programming Language Structures Notes for Chapter 4 of Concepts of Programming Languages Scanning and Parsing The scanner (or lexical analyzer) of a compiler processes the source program, recognizing
Semantic Analysis: Types and Type Checking
Semantic Analysis Semantic Analysis: Types and Type Checking CS 471 October 10, 2007 Source code Lexical Analysis tokens Syntactic Analysis AST Semantic Analysis AST Intermediate Code Gen lexical errors
Evolution of the Major Programming Languages
142 Evolution of the Major Programming Languages Object Oriented Programming: Smalltalk Object-Oriented: It s fundamental characteristics are: Data abstraction, Inheritance and Dynamic Binding. The essence
Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students
Eastern Washington University Department of Computer Science Questionnaire for Prospective Masters in Computer Science Students I. Personal Information Name: Last First M.I. Mailing Address: Permanent
Module: Software Instruction Scheduling Part I
Module: Software Instruction Scheduling Part I Sudhakar Yalamanchili, Georgia Institute of Technology Reading for this Module Loop Unrolling and Instruction Scheduling Section 2.2 Dependence Analysis Section
Tools Page 1 of 13 ON PROGRAM TRANSLATION. A priori, we have two translation mechanisms available:
Tools Page 1 of 13 ON PROGRAM TRANSLATION A priori, we have two translation mechanisms available: Interpretation Compilation On interpretation: Statements are translated one at a time and executed immediately.
Eastern Washington University Department of Computer Science. Questionnaire for Prospective Masters in Computer Science Students
Eastern Washington University Department of Computer Science Questionnaire for Prospective Masters in Computer Science Students I. Personal Information Name: Last First M.I. Mailing Address: Permanent
JavaScript as a compilation target Making it fast
JavaScript as a compilation target Making it fast Florian Loitsch, Google Who am I? Florian Loitsch, software engineer at Google Projects Scheme2Js - Scheme-to-JavaScript compiler Js2scheme - JavaScript-to-Scheme
COURSE TITLE COURSE DESCRIPTION
COURSE TITLE COURSE DESCRIPTION CS-00X COMPUTING EXIT INTERVIEW All graduating students are required to meet with their department chairperson/program director to finalize requirements for degree completion.
COMPUTER SCIENCE. 1. Computer Fundamentals and Applications
COMPUTER SCIENCE 1. Computer Fundamentals and Applications (i)generation of Computers, PC Family of Computers, Different I/O devices;introduction to Operating System, Overview of different Operating Systems,
Online Recruitment System 1. INTRODUCTION
1. INTRODUCTION This project Online Recruitment System is an online website in which jobseekers can register themselves online and apply for job and attend the exam. Online Recruitment System provides
1 Introduction. 2 An Interpreter. 2.1 Handling Source Code
1 Introduction The purpose of this assignment is to write an interpreter for a small subset of the Lisp programming language. The interpreter should be able to perform simple arithmetic and comparisons
gprof: a Call Graph Execution Profiler 1
gprof A Call Graph Execution Profiler PSD:18-1 gprof: a Call Graph Execution Profiler 1 by Susan L. Graham Peter B. Kessler Marshall K. McKusick Computer Science Division Electrical Engineering and Computer
Course MS10975A Introduction to Programming. Length: 5 Days
3 Riverchase Office Plaza Hoover, Alabama 35244 Phone: 205.989.4944 Fax: 855.317.2187 E-Mail: [email protected] Web: www.discoveritt.com Course MS10975A Introduction to Programming Length: 5 Days
AP Computer Science A - Syllabus Overview of AP Computer Science A Computer Facilities
AP Computer Science A - Syllabus Overview of AP Computer Science A Computer Facilities The classroom is set up like a traditional classroom on the left side of the room. This is where I will conduct my
HIGH PERFORMANCE BIG DATA ANALYTICS
HIGH PERFORMANCE BIG DATA ANALYTICS Kunle Olukotun Electrical Engineering and Computer Science Stanford University June 2, 2014 Explosion of Data Sources Sensors DoD is swimming in sensors and drowning
Compilers I - Chapter 4: Generating Better Code
Compilers I - Chapter 4: Generating Better Code Lecturers: Paul Kelly ([email protected]) Office: room 304, William Penney Building Naranker Dulay ([email protected]) Materials: Office: room 562 Textbook
Big Data looks Tiny from the Stratosphere
Volker Markl http://www.user.tu-berlin.de/marklv [email protected] Big Data looks Tiny from the Stratosphere Data and analyses are becoming increasingly complex! Size Freshness Format/Media Type
Scanning and parsing. Topics. Announcements Pick a partner by Monday Makeup lecture will be on Monday August 29th at 3pm
Scanning and Parsing Announcements Pick a partner by Monday Makeup lecture will be on Monday August 29th at 3pm Today Outline of planned topics for course Overall structure of a compiler Lexical analysis
McGraw-Hill The McGraw-Hill Companies, Inc., 20 1. 01 0
1.1 McGraw-Hill The McGraw-Hill Companies, Inc., 2000 Objectives: To describe the evolution of programming languages from machine language to high-level languages. To understand how a program in a high-level
language 1 (source) compiler language 2 (target) Figure 1: Compiling a program
CS 2112 Lecture 27 Interpreters, compilers, and the Java Virtual Machine 1 May 2012 Lecturer: Andrew Myers 1 Interpreters vs. compilers There are two strategies for obtaining runnable code from a program
Chapter 13 Computer Programs and Programming Languages. Discovering Computers 2012. Your Interactive Guide to the Digital World
Chapter 13 Computer Programs and Programming Languages Discovering Computers 2012 Your Interactive Guide to the Digital World Objectives Overview Differentiate between machine and assembly languages Identify
Architectural Design Patterns for Language Parsers
Architectural Design Patterns for Language Parsers Gábor Kövesdán, Márk Asztalos and László Lengyel Budapest University of Technology and Economics Department of Automation and Applied Informatics Magyar
Embedded Systems. Review of ANSI C Topics. A Review of ANSI C and Considerations for Embedded C Programming. Basic features of C
Embedded Systems A Review of ANSI C and Considerations for Embedded C Programming Dr. Jeff Jackson Lecture 2-1 Review of ANSI C Topics Basic features of C C fundamentals Basic data types Expressions Selection
