Comp 311 Principles of Programming Languages Lecture 1 Course Overview and Culture Corky Cartwright August 25, 2008.

Slides:



Advertisements
Similar presentations
CIS-74 Computer Software Quality Assurance Systematic Software Testing Chapter 1: An Overview of the Testing Process.
Advertisements

Chapter 1: Preliminaries
Lecture 01 - Introduction Eran Yahav 1. 2 Who? Eran Yahav Taub 734 Tel: Monday 13:30-14:30
Intro to CIT 594
1 Programming for Engineers in Python Autumn Lecture 5: Object Oriented Programming.
R R R CSE870: Advanced Software Engineering (Cheng): Intro to Software Engineering1 Advanced Software Engineering Dr. Cheng Overview of Software Engineering.
Reasons to study concepts of PL
January 19, 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.
CS 153: Concepts of Compiler Design August 25 Class Meeting Department of Computer Science San Jose State University Fall 2014 Instructor: Ron Mak
Object-oriented design CS 345 September 20,2002. Unavoidable Complexity Many software systems are very complex: –Many developers –Ongoing lifespan –Large.
CSE341: Programming Languages Lecture 26 Course Victory Lap Dan Grossman Spring 2013.
Programming Concepts and Languages Chapter 12 – Computers: Understanding Technology, 3 rd edition 1November
COMP313A Programming Languages Introduction. More Housekeeping Stuff Reading Material Textbook –Programming Languages: Principles and Practice by Kenneth.
New experiences with teaching Java as a second programming language Ioan Jurca “Politehnica” University of Timisoara/Romania
Language Evaluation Criteria
1 CSCE Programming Languages Introduction and Course Administration Dr. Hyunyoung Lee 410B HR Bright
CS 355 – Programming Languages
From Concept to Release By:Kevin Cherry Co-Owner:Timothy Wright
CSE 501N Fall ‘09 00: Introduction 27 August 2009 Nick Leidenfrost.
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.
Programming. What is a Program ? Sets of instructions that get the computer to do something Instructions are translated, eventually, to machine language.
Types for Programs and Proofs Lecture 1. What are types? int, float, char, …, arrays types of procedures, functions, references, records, objects,...
Testing in Extreme Programming
Chapter 10: Compilers and Language Translation Invitation to Computer Science, Java Version, Third Edition.
Programming Languages Summer
Programming Languages –14 David Watt (Glasgow) Steven Wong (Singapore) Moodle : Computing Science → Level 3 → Programming Languages 3 © 2012 David.
Sadegh Aliakbary Sharif University of Technology Fall 2012.
System Development Life Cycle. The Cycle When creating software, hardware, or any kind of product you will go through several stages, we define these.
1 COMP 3438 – Part II-Lecture 1: Overview of Compiler Design Dr. Zili Shao Department of Computing The Hong Kong Polytechnic Univ.
SaveUML System design. System overview Possible...
Catie Welsh January 10, 2011 MWF 1-1:50 pm Sitterson 014.
Copyright © 2007 Addison-Wesley. All rights reserved.1-1 Reasons for Studying Concepts of Programming Languages Increased ability to express ideas Improved.
University of Southern California Center for Systems and Software Engineering Model-Based Software Engineering Supannika Koolmanojwong Spring 2013.
Advanced Database Course (ESED5204) Eng. Hanan Alyazji University of Palestine Software Engineering Department.
 What is Modeling What is Modeling  Why do we Model Why do we Model  Models in OMT Models in OMT  Principles of Modeling Principles of Modeling 
Introduction to Compilers. Related Area Programming languages Machine architecture Language theory Algorithms Data structures Operating systems Software.
3.2 Semantics. 2 Semantics Attribute Grammars The Meanings of Programs: Semantics Sebesta Chapter 3.
Comp 312 Production Programming Lecture 1 Course Overview and Culture Corky Cartwright January 12, 2005.
CS 105: LISP GRG 424 MW 1:00-2:00pm About Me Jacob Schrum: call me Jacob BS in Computer Science, Math and German at Southwestern University Currently.
Methods of Software Development Karl Lieberherr Spring 2007.
Formal Specification: a Roadmap Axel van Lamsweerde published on ICSE (International Conference on Software Engineering) Jing Ai 10/28/2003.
Exceptions Lecture 11 COMP 401, Fall /25/2014.
FUNCTIONAL PROGRAMING AT WORK - HASKELL AND DOMAIN SPECIFIC LANGUAGES Dr. John Peterson Western State Colorado University.
Programming Languages Concepts Chapter 1: Programming Languages Concepts Lecture # 4.
Learn Django Python by Building Projects. Python is a programming language that allows programmers to express concepts in fewer lines of code in languages.
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
Corky Cartwright January 9, 2017
CSE341: Programming Languages Lecture 26 Course Victory Lap
Advanced Computer Systems
Before You Begin Nahla Abuel-ola /WIT.
SYSTEM SOFTWARE & COMPILER DESIGN
PROGRAMMING LANGUAGES
Corky Cartwright January 13, 2014
System Programming and administration
课程名 编译原理 Compiling Techniques
Chapter 1 Preliminaries.
Programming Concepts and Languages
Assembler, Compiler, Interpreter
CSE341: Programming Languages Lecture 26 Course Victory Lap
EECE 310 Software Engineering
EE422C Software Design and Implementation II
Assembler, Compiler, Interpreter
CSE341: Programming Languages Lecture 26 Course Victory Lap
CSE341: Programming Languages Lecture 26 Course Victory Lap
Compilers Principles, Techniques, & Tools Taught by Jing Zhang
Presentation transcript:

Comp 311 Principles of Programming Languages Lecture 1 Course Overview and Culture Corky Cartwright August 25, 2008

Course Facts See web page Participate in the course newsgroup

What is Comp 311? 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 high-level interpreters to define meaning of languages (expression evaluators)‏

What is Comp 311, cont. –Using anatomy to prevent bugs Type systems Type checking Type inference (reconstruction)‏ –Mechanisms for language extension Syntax extension (macros)‏ Reflection Custom class loaders –Sketch how the interpretation process can actually be efficiently implemented by machine instructions CPS transformation Garbage Collection

Subtext of Comp 311 Teach good software engineering practice. You have to write lots of lines 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.

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

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 30 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 that a software developer considers in in designing programs. A program design may involve languages other than the language used for implementation. Some implementation languages are extensible through macros, reflection, or customizable class loaders.

Course Culture Approximately 8 programming assignments 7 required 1-2 extra credit Assignments can be done in either Generic Java (Java 5.0/6.0) or DrScheme. We encourage you to use DrJava for Generic Java. Both JUnit and javadoc are built-in to DrJava. So is support for generics. Late assignments not accepted, but … –Every student has 7 slip days to use as he/she sees fit. –Saving as many as possible until late in the term is a good idea.

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. Extensive unit testing is important because you can reuse previous unit tests on subsequent assignments with no change in most cases.

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 with Andy Gleason)‏ –Weaknesses: Tendency to digress Explain concepts at too abstract a level without sufficient examples