Corky Cartwright January 9, 2017

Slides:



Advertisements
Similar presentations
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Advertisements

CMSC 132: Object-Oriented Programming II Nelson Padua-Perez William Pugh Department of Computer Science University of Maryland, College Park.
Reasons to study concepts of PL
January 12, Compiler Design Hongwei Xi Comp. Sci. Dept. Boston University.
Class 1: What this course is about. Assignments Reading: Chapter 1, pp 1-33 Do in Class 1: –Exercises on pages 13, 14, 22, 28 To hand in in Class 2: –Exercises.
COP4020/CGS5426 Programming languages Syllabus. Instructor Xin Yuan Office: 168 LOV Office hours: T, H 10:00am – 11:30am Class website:
TGDC Meeting, December 2011 Michael Kass National Institute of Standards and Technology Update on SAMATE Automated Source Code Conformance.
Overview of the Course. Critical Facts Welcome to CISC 672 — Advanced Compiler Construction Instructor: Dr. John Cavazos Office.
CS 355 – Programming Languages
(1.1) COEN 171 Programming Languages Winter 2000 Ron Danielson.
Comp 311 Principles of Programming Languages Lecture 1 Course Overview and Culture Corky Cartwright August 25, 2008.
COMP Introduction to Programming Yi Hong May 13, 2015.
Overview of the Course Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. Students enrolled in Comp 412 at Rice University.
Programming Languages Summer
Sadegh Aliakbary Sharif University of Technology Fall 2012.
1 COMP 3438 – Part II-Lecture 1: Overview of Compiler Design Dr. Zili Shao Department of Computing The Hong Kong Polytechnic Univ.
Copyright © 2007 Addison-Wesley. All rights reserved.1-1 Reasons for Studying Concepts of Programming Languages Increased ability to express ideas Improved.
Class 1: What this course is about. Assignment Read: Chapter 1 Read: Chapter 1 Do: Chapter 1 ‘workbook’ pages not finished in class Do: Chapter 1 ‘workbook’
Comp 311 Principles of Programming Languages Lecture 1 Course Overview and Culture Corky Cartwright August 25, 2008.
Introduction to Compilers. Related Area Programming languages Machine architecture Language theory Algorithms Data structures Operating systems Software.
Comp 312 Production Programming Lecture 1 Course Overview and Culture Corky Cartwright January 12, 2005.
Compiler Design Introduction 1. 2 Course Outline Introduction to Compiling Lexical Analysis Syntax Analysis –Context Free Grammars –Top-Down Parsing –Bottom-Up.
Compiler Construction (CS-636)
COP4020 INTRODUCTION FALL COURSE DESCRIPTION Programming Languages introduces the fundamentals of the design and implementation of programming languages.
Programming Languages Concepts Chapter 1: Programming Languages Concepts Lecture # 4.
Concepts of Programming Languages Lecturer: Dr. Emad Nabil Lecture # 2.
Comp 411 Principles of Programming Languages Lecture 3 Parsing
Advanced Software Engineering Dr. Cheng
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
Advanced Computer Systems
Course Overview - Database Systems
Component 1.6.
Component 1.6.
Concepts of Programming Languages
CSc 1302 Principles of Computer Science II
Compiler, Interpreter, and Bootstrapping
Chapter 1 Introduction.
Computer Networks CNT5106C
Language Translation Compilation vs. interpretation.
PROGRAMMING LANGUAGES
Corky Cartwright January 13, 2014
System Programming and administration
Chapter 1 Reasons to study concepts of PLs Programming Domains
Chapter 1 Introduction.
课程名 编译原理 Compiling Techniques
1.1 Reasons to study concepts of PLs
Chapter 1 Preliminaries.
Overview of the Course Copyright 2003, Keith D. Cooper, Ken Kennedy & Linda Torczon, all rights reserved. Students enrolled in Comp 412 at Rice University.
CS416 Compiler Design lec00-outline September 19, 2018
CS 3304 Comparative Languages Fall 2011
Course supervisor: Lubna Siddiqui
Compiler Construction
CS 1302 Programming Principles II
EECE 310 Software Engineering
CSE 331 Software Design & Implementation
CDA 3100 Spring 2010.
CMSC 611 Advanced Computer Arch.
Introduction to Programming Using C++
Programming Languages 2nd edition Tucker and Noonan
EE422C Software Design and Implementation II
CSE 331 Software Design & Implementation
Chapter 11 user support.
CS416 Compiler Design lec00-outline February 23, 2019
Principles of Programming Languages
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
Extreme Programming.
CSCE 314: Programming Languages Dr. Dylan Shell
Chapter 1 Introduction to Programming
CS Problem Solving and Object Oriented Programming Spring 2019
Presentation transcript:

Corky Cartwright January 9, 2017 Comp 411 Principles of Programming Languages Lecture 1 Course Overview and Culture Corky Cartwright January 9, 2017

Course Facts See web page and Piazza page www.cs.rice.edu/~javaplt/411/17-spring and Piazza page piazza.com/rice/spring2017/comp411 Participate in the discussions at Piazza site. Coding style matters; testing suites really matter. Grade in Comp 411 is 50% assignments and 50% tests; there is a scheduled mid-term and a scheduled final; each counts 25%. See the tentative schedule on the course web page.

Comp 411 vs. 511 Comp 511 = Comp 411 + mandatory extra credit in programming projects + three written assignments focusing on applications Grading formula 47% tests + 47% exams + 6% written assignments TA support level is less than ideal so we have designed these assignments for easy grading

Why Study Programming Languages? Programmers must master the programming languages of importance within the domains in which they are working. New languages are continually being developed. Who knows what languages may be involved in computing 25 years from now? Many software applications involve defining and implementing a programming language. A deep knowledge of programming languages expands the range of possible solutions available to a software developer. A program design may involve extending the designated implementation language either explicitly (macros, pre-processors & custom class loaders) or implicitly (new libraries, hand-translation) The correctness of portable software hinges on program semantics independent of the underlying implementation.

What is Comp 411? Anatomy (Syntax) and Physiology (Semantics) of Programming Languages What is the anatomy of a programming language Parsing and abstract syntax Lexical nesting and the scope of variables What are the conceptual building blocks of programming languages? (Common anatomical structures and their functions)‏ Use reduction and high-level interpretation to define meaning of languages (expression evaluators)‏

What is Comp 411? (cont.) Using anatomy to prevent bugs Type systems (syntactic tags with semantic content) Type checking Type inference (reconstruction)‏ Mechanisms for language extension Syntax extension (macros)‏ Reflection Custom class loaders Sketch how the interpretive process can be efficiently implemented by machine instructions (intelligent compilation) using good data representations Environment representations CPS transformation Reference Counting and Garbage Collection

Subtext of Comp 411 Teach good software engineering practice in Java. You have to write a significant number of conceptually challenging lines of code in this course. With good software engineering practices, the workload is reasonable. With poor software engineering practices, the workload is unreasonable. The assignments in this course leverage abstractions that are not explicit in Java but are easily encoded using the proper design patterns (e.g., composite, interpreter, strategy, visitor). In putative successors to Java, notably Scala and Swift, these abstractions are built-in to the language. Unfortunately, the semantics of Scala are hideously complex. Martin Odersky has assured me that a new edition of Scala with a semantically tractable core subset (called “Dot/Dotty”) is in the pipeline. Swift is simpler but the open source version is poorly supported. Moreover, it is still evolving. I am hopeful, but in the meantime, we will use Java, which is a nice language if it used properly.

Good Software Engineering Practice Test-driven design Unit tests for each non-trivial method written before any method code is written Unit tests are a permanent part of the code base Pair programming Continual integration Continual refactoring to avoid code duplication Conscientious documentation (contracts)‏ Avoiding mutation unless there is a compelling reason to introduce it.

Course Culture Approximately 8 programming assignments 7 required 1-2 extra credit Assignments must be done in Generic Java (Java 7/8 including parameterized types). We encourage you to use DrJava. Junit, JaCoco (a code coverage tool), and javadoc are built-in to DrJava and they are fully compatible with command line compilation, execution, and testing (using ant scripts). JaCoco support was added in the latest release. Late assignments not accepted, but … Every student has 7 slip days to use as he/she sees fit. Advice: save as many slip days as possible until late in the term. The last two assignments are the most time-consuming.

Course Culture, cont. Assignments are cumulative. Class solutions are provided for the first three assignments within three days after they are due. After the third assignment, you are on your own except for skeleton test suites which we will provide. Extensive unit testing is important. In most of the projects, you can reuse previous unit tests on subsequent assignments with little or no change.

Course Culture, cont. My teaching style Encourage you to develop a passion for the subject and personally digest and master the material. Make the course accessible to students who don't aspire to become language researchers (avoid repeating my experience in complex analysis with Andy Gleason)‏ Weaknesses: Tendency to digress Explain concepts at too abstract a level without sufficient examples Redress: remind me when I have strayed from the course outline; ask questions about examples and tell me if my explanations are too abstract