Skip to content

jamesquinlan/principles-programming-languages

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Programming Languages Principles and Concepts

The course introduces and covers the fundamental concepts of programming languages by describing the design of various language constructs, examining the design choices for these constructs, and comparing design alternatives. In addition, it describes principles and techniques of high-level programming language specification, including syntax and semantics and implementation methods. Languages are considered formal constructs representing computable functions, and the course presents the primary results of computability theory. Methods of recognition for regular and context-free languages, the functional alternative to the state-based imperative paradigm, parse trees as control constructs, and concurrent programming synchronization primitives are also covered.

Introduction to the fundamental concepts of formal languages and the evolution and characteristics of major programming languages. Topics include finite-state automata, regular expressions, parsing, syntax and semantics, scope and binding, and abstract data types.

A Programming Language describes what sequences are allowed (the syntax) and what they mean (the semantics).

Prerequisite

  • Knowledge and experience with at least one language (e.g., C, C++, Java)
  • Knowledge of common data structures
  • General knowledge of computational process(es) for problem solving

Languages Learned

Textbook

Louden, K. & Lambert K., (2012). Programming Languages Principles and Practices 3rd Edition.

Publisher: Cengage.

ISBN: 9781111529413

Principles and Techniques of Programming Languages

Syntax and Semantics: Every programming language has syntax and semantics that define the rules for writing valid programs and their meaning, respectively. Syntax defines the structure and grammar of the language, while semantics defines the behavior of programs written in that language.

Abstraction: Abstraction is the process of hiding implementation details and exposing only the essential features of a programming language. It allows programmers to work at a higher level of abstraction, making it easier to write correct and maintainable code.

Data Types: A programming language defines different data types, such as integers, floating-point numbers, strings, and arrays, among others. These data types provide a way to represent different kinds of data in a program.

Control Structures: Control structures are the building blocks of a programming language that allow programmers to control the flow of execution in a program. Examples of control structures include conditional statements, loops, and function calls.

Memory Management: Memory management allocates and deallocates memory for program variables and data structures. A programming language can provide different memory management techniques, such as garbage collection or manual memory management.

Concurrency: Concurrency is the ability of a programming language to handle multiple tasks or threads simultaneously. A programming language can provide different synchronization primitives, such as locks, semaphores, and monitors, to manage concurrent access to shared resources.

Object-Oriented Programming: Object-oriented programming is a programming paradigm that emphasizes using objects and classes to organize and structure code. It provides encapsulation, inheritance, and polymorphism, enabling code reuse and maintainability.

Functional Programming: The functional programming paradigm treats computation as evaluating mathematical functions. It emphasizes immutability, higher-order functions, and declarative code structures to achieve more predictable and concise software development.

Topics

Grade Cutoffs

Standard letter grade cutoffs.

Range (in %) Grade
93 - 100 A
90 - 92.9 A-
87 - 89.9 B+
83 - 86.9 B
80 - 82.9 B-
77 - 79.9 C+
73 - 76.9 C
70 - 72.9 C-
67 - 69.9 D+
63 - 66.9 D
60 - 62.9 D-
< 60 F

Online Editor/Compiler

OneCompiler supports more than 50 programming languages, including all popular languages like Java, Python, C, C++, NodeJS, Javascript, Groovy, Jshell & Haskell, TCL, Lua, Ada, Common Lisp, D Language, Elixir, Erlang, F#, Fortran, Assembly, Scala, Php, Python2, C#, Perl, Ruby, Go, R, VB.net, Racket, Ocaml, HTML, and several database languages. OneCompiler helps users to write, run and share code online.

Reference List

BibTeX