INF 141 Latent Semantic Analysis and Indexing
Download
Report
Transcript INF 141 Latent Semantic Analysis and Indexing
INF 212
ANALYSIS OF PROG. LANGS
LECTURE 1
Instructors: Crista Lopes
Copyright © Instructors.
Outline
Course objectives
The course
Credits:
This presentation uses material from
https://courseware.stanford.edu/pg/courses/lectures/96023
Where the rubber hits the road
Architect
Programmer
The code
Tester
(uses one or more
Programming
Languages)
Diagnostic
Tools
Compilers,
Runtime
environments
Objectives
Understand concepts in PLs
of PLs, all look different they aren’t that
different
Appreciate history, diversity of ideas in PLs
Be prepared for new languages
Ignore sales pitches
100’s
Be rigorous (PLs are a good example)
Certain
times, you cannot afford to be fuzzy
Learn some important facts about existing language
systems and techniques
Learn and think critically about tradeoffs
Programming Languages
Universe of design ideas
Crazy concepts often became mainstream
E.g.
garbage collection, recursion, closures, …
(other crazy concepts were just crazy)
Language design concepts often pop out into
systems design concepts
E.g.
Map-Reduce, stateless – REST, …
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 replaced C as most common intro language
Less emphasis on how data, control represented in machine
Research and development trends
Modularity
Program analysis
Automated error detection, programming env, compilation
Isolation and security
Java, C++: standardization of new module features
Sandboxing, language-based security, …
Web 2.0
Increasing client-side functionality, mashup isolation problems
What’s worth studying?
Dominant languages and paradigms
Leading
languages for general systems programming
Explosion of programming technologies for the web
Important implementation ideas
Performance challenges
Design tradeoffs
Concepts that research community is exploring for
new programming languages and tools
E.g.
Multi-core
The Course
Introduction – the PL landscape
Mathematical Foundations
JavaScript: massively used little language
Haskell: nest of design ideas
Type Systems
Reflection
Modules
Virtual Machines
Program analysis
Assignments and Grading
Homework Projects
90%
6
to 9
Groups of 2
Class participation
10%
Getting A and A+
You will get an A if
Show
up for class, engage in message board
Do 6 out of 9 projects correctly and on time
You will get an A+ if
All
of the above
Do 3 additional projects (9 total) correctly and on time
Grading/Demo Sessions
Every 2 weeks, on Mondays
All day
15 min slots