0% found this document useful (0 votes)
52 views13 pages

Introduction

This document provides an introduction to a course on programming languages. It includes information about the instructor, a poll of popular programming languages, and five main goals for the course. The goals are to shift students from being mere technology consumers to creators, challenge them to solve problems through specification and synthesis, introduce domain-specific languages, explain different programming paradigms, and tackle complex software design and implementation. The document outlines example activities and assignments to help achieve these goals, such as designing a game programming language. It also lists some recommended textbooks.

Uploaded by

Tushar Shrimali
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
52 views13 pages

Introduction

This document provides an introduction to a course on programming languages. It includes information about the instructor, a poll of popular programming languages, and five main goals for the course. The goals are to shift students from being mere technology consumers to creators, challenge them to solve problems through specification and synthesis, introduce domain-specific languages, explain different programming paradigms, and tackle complex software design and implementation. The document outlines example activities and assignments to help achieve these goals, such as designing a game programming language. It also lists some recommended textbooks.

Uploaded by

Tushar Shrimali
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 13

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

You might also like