A Programming Language
Two Variables
x
,y
Three Operations
x++
x--
x = 0 ? L1 : L2
Example Program
(What does it do?)
L1: x++
--
y= 0 ? L2 : L1
y L2: ...
The above language is “equivalent to” every PL!
But good luck writing
… QuickSort
… Fortnite
… Spotify!
So Why Study Programming Languages?
A different language is a different vision of life.
So Why Study Programming Languages?
The principle of linguistic relativity holds that the structure of a language affects its speakers world view or cognition.
Or more simply:
Programming Language shapes Programming Thought.
Language affects how ideas and computation are expressed
Course Goals
New languages come (and go …)
There was no
- Java 30 years ago
- C# 25 years ago
- Rust 15 years ago
- WebAssembly 5 years ago
What is CSE 130 about?
- Concepts in programming languages
- Programming paradigms
- Language design and implementation
Goal: Learn the Anatomy of PL
- What makes a programming language?
- Which features are fundamental and which are syntactic sugar?
Goal: Learn New Languages / Constructs
New ways to describe and organize computation, to create programs that are:
- Correct
- Readable
- Extendable
- Reusable
Goal: How to Design new Languages
New languages being designed in industry as we speak:
- Flow, React @ Facebook
- Rust @ Mozilla
- TypeScript @ Microsoft
- Swift @ Apple
- WebAssembly @ Google + Mozilla + Microsoft
Buried in every large system is a (domain-specific) language
- DB: SQL
- Word, Excel: Formulas, Macros, VBScript
- Emacs: LISP
- Latex, shell scripts, makefiles, …
If you work on a large system, you will design a new PL!
Goal: Enable You To Choose Right PL
But isn’t that decided by
- Libraries
- Standards
- Hiring
- Your Boss?!
Yes.
My goal: Educate tomorrow’s leaders so you’ll make informed choices.
What is CSE 130 not about?
Learning…
- JavaScript in January
- Haskell in February
- C++ in March
etc.
The Crew
Profs
Professor at CSE since 2005
Research: Tools and Techniques to make programs better
Many thanks to for taking over in weeks 1-2!
The Crew
Teaching Assistants
Tutors
Course Syllabus
Functional Programming
- Lambda calculus (2 weeks)
- Haskell (6 weeks)
Logic Programming
- Prolog (2 weeks, maybe, but doubtful!)
QuickSort in C
void sort(int arr[], int beg, int end){
if (end > beg + 1){
int piv = arr[beg];
int l = beg + 1;
int r = end;
while (l != r-1)
if(arr[l] <= piv) l++;
else swap(&arr[l], &arr[r--]);
if(arr[l]<=piv && arr[r]<=piv)
=r+1;
lelse if(arr[l]<=piv && arr[r]>piv)
{l++; r--;}
else if (arr[l]>piv && arr[r]<=piv)
(&arr[l++], &arr[r--]);
swapelse r=l-1;
(&arr[r--], &arr[beg]);
swap(arr, beg, r);
sort(arr, l, end);
sort}
}
QuickSort in Haskell
sort [] = []
sort (x:xs) = sort ls ++ [x] ++ sort rs
where
= [ l | l <- xs, l <= x ]
ls = [ r | r <- xs, x < r ] rs
(Note: not a wholly fair comparison…)
Course Logistics
- Calendar
- Lecture notes
- Programming assignments
- Go-to place if you have a question or need help
Grading
- 5% Class participation (clicker questions)
- 25% Programming Assignments
- 35% Two Midterm Tu 1/30 and Thu 2/22
- 35% Final Tu 3/19
- 05% Piazza Extra Credit
- To top 20 best participants
Assignments
6 programming assignments
- Released online
- At least a week before due date
- Via github classroom
Six late days
- used as whole unit
- 5 mins late = 1 late day
- at most 4 per assignment
No Groups
- Assignments must be submitted individually via github
- Ok to discuss with classmates, but solution must be your own
Exams
Must be done at allotted time and location
2-sided ``cheat sheet’’
The final is cumulative
Clickers
Make class interactive
- Help you and me understand what’s tricky
Not Optional
- Cheap ones are fine
- Respond to 75% questions
Clicker Protocol
- Solo Vote
- Think for yourself, select answer
- Discuss
- Analyze problem in groups
- Reach consensus
- Have questions, raise your hand!
- Group Vote
- Everyone in group votes
- Hopefully the same way but not enforced
- You don’t have to answer correctly to get points!
- Class Discuss
- What was easy or tricky?
Your Resources
Discussion section
- Friday 3:00-3:50pm (PCYNH 109)
Office hours
- Every day, check CANVAS calendar
Piazza
- We answer during work hours and office hours (M-F)
No text
- Online lecture notes and links
Academic Integrity
Programming assignments: do not copy from classmates or from previous years
Exams done alone
- Zero Tolerance
- Offenders punished ruthlessly
- Please see academic integrity statement
Students with Disabilites
Students requesting accommodations for this course due to a disability or current functional limitation must provide a current Authorization for Accommodation (AFA) letter issued by the Office for Students with Disabilities (OSD) which is located in University Center 202 behind Center Hall.
Students are required to present their AFA letters to Faculty (please make arrangements to contact me privately) and to the CSE OSD Liaison Christina Rontell in advance so that accommodations may be arranged.
Diversity and Inclusion
Goal
- Create a diverse and inclusive learning environment
- Where all students feel comfortable and can thrive.
- Please let us know if there is a way to make you feel more included
- In person, via email/discussion boar
Expectations
- Students will honor and respect your classmates!
- Abide by the UCSD Principles of Community
- Understand that others’ backgrounds, perspectives and experiences will be different
- Help build an environment where everyone is respected and comfortable.