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