PRINCIPLES OF PROGRAMMING
LANGUAGES
CS F301 – Introduction
PROF. KUNAL KORGAONKAR
About Me
• PhD – UC San Diego, US
• MS – IIT Madras, India
• Postdoctoral – Technion, Israel
• Interest – Computer Systems Design and
Implementation (and many other topics)
• Lead and PI of “Confluence Lab” – Building systems at
the confluence of science, technology and society
• Asst. Prof. at the CSIS Dept. at BITS Pilani, Goa Campus
Programming Languages – PL Poll
• C – Few
• C++ - Significant Majority
• Java – Considerable
• Javascript – Few more
• Python – Consid+erable
• Rust - Few
• Any Other – Not many
GOALS of the Class
• Goal 1: Shifting from being a “Consumer of
Technology” to a “Creator of Technology”
• Goal 2: Challenge of Writing Code - Specification and
Synthesis as an Answer
• Goal 3: Rise of “Domain Specific Languages” and
through working on specific domains
• Goal 4: Introduction to different “Programming
Languages Paradigm” (a good starting point)
• GOAL 5: Complex and scalable full-system or complete
software & systems design and implementation
From Merely Consumer to
Creator of Technology as well
• In Compiler Construction Lab
(CS F363 - last year)
• Design your own game programming
language for the Tetris Game
• Compile your program written in your
game programming language to final
executable form
• For instance first step could be: Game-
Tetris-Program-X ➔ Python/C++ as
Language for Intermediate Code Tetris
• And second step is: Python/C++ as
Intermediate Code ➔ Binary
Executable for Tetris (trivial)
From Merely Consumer to
Creator of Technology as well
Game
Programming
Lang. Design and
Compiler
The Challenge of Writing Code
• The Specification Challenge
• Example in robotics
A STONE in the PATH!!
The Challenge of Writing Code
• The Synthesis Challenge
• Some aspects of synthesis challenge
Rise of Domain Specific Languages
• Example domains and how to “learn by doing”
(listed below):
• Data Pipelines
• Data Markets
• Image Processing
• Robotics Control
• Security by Design
• Security by Deception
• Neural + Logic
Introduction to different
Programming Paradigms
• Functional Programming
• Logic Programming
• Object Oriented Programming
• Imperative Programming
• Concurrent Programming
Goals and Paths
Specification
Soft Engg. “Creation”
Complex,
Domain (G2) of
Programming Scalable
Specific Complete
Paradigms Software &
Languages Synthesis Software
(G4) Systems*
Systems (G3) Soft Engg. & Systems
(G5)
(G2) (G1)
* Complex, Scalable & Human-Centered for the User and Developer
BOOKS
• Programming Languages, Concepts and
Constructs, Author: Ravi Sethi
• Programming Languages Pragmatics, Author:
Michael Scott
• Types and Programming Languages, Author:
Benjamin C Pierce
• And many research papers and reference material
Thanks!
• Reach out to me (
[email protected])
and my TA team
• Pathak Yash Yogesh, Aman Sharma, Y Akash Reddy,
Kunal Choudary, Shivansh Sarbhai, Tarang Agarwal,
Apurv Amar Botle, Arnav Jain, Talati Rathin
Nikhilkumar, Jasleen Kaur, Bishal Saha, Shubhanjali
Srivastava, Riya Ramchandra Naik