Back to Full Curriculum
CS206Semester 43 (3-0-0)Core

Programming Methodology

Classification of programming languages by execution model (compiled vs interpreted, JIT), generation (1GL assembly to 5GL AI-based), and level of abstraction, Imperative programming fundamentals: von Neumann model, m...

01

Unit 1: Programming Language Taxonomy and Imperative Paradigm

Classification of programming languages by execution model (compiled vs interpreted, JIT), generation (1GL assembly to 5GL AI-based), and level of abstraction, Imperative programming fundamentals: von Neumann model, mutable state, sequential execution, and side effects, C/C++ as quintessential systems languages with manual memory management and zero-cost abstractions, Fortran legacy and its influence on scientific computing paradigms, Detailed study of language implementation trade-offs (performance vs. productivity, static vs. dynamic typing).

02

Unit 2: Object-Oriented Programming Across Languages

Core OOP principles (encapsulation, inheritance, polymorphism, abstraction) independent of syntax, Comparative implementations in Java (fully OOP with GC), C++ (multi-paradigm with RAII), Python (dynamic OOP), and C # (.NET ecosystem), Design patterns as language-agnostic solutions (Singleton, Factory, Observer, Strategy), Interface-based programming and dependency inversion, Language-specific idioms for polymorphism (virtual functions, interfaces, duck typing) and their runtime costs.

03

Unit 3: Functional Programming Concepts and Languages

Declarative vs. imperative styles, pure functions, immutability, and referential transparency, First-class and higher-order functions, Lambda calculus as theoretical foundation connecting to Theory of Computation (CS203), Haskell (lazy pure functional), Scala (hybrid OOP/FP on JVM), JavaScript (functional capabilities in browser/server), Closures, currying, and monads as abstraction mechanisms, Pattern matching and algebraic data types vs. traditional conditionals.

04

Unit 4: Scripting, Concurrent, and Domain-Specific Languages

Dynamic languages for rapid prototyping (Python, JavaScript, Ruby), scripting paradigms (shell, configuration DSLs), Garbage collection strategies and their impact on real-time systems, Concurrent programming models (shared memory threads vs. message passing actors), Go (goroutines/channels), Erlang (actor model), Domain-specific languages (SQL, HTML/CSS, shader languages, regex), Embedded DSLs vs. external DSLs, Metaprogramming (templates/macros in C++, decorators in Python, LINQ in C #).

05

Unit 5: Language Design for Compilers and Modern Ecosystems

Lexical structure, syntax vs. semantics, parsing strategies (LL/LR) connecting to compiler design preparation, Type systems (static/dynamic, strong/weak, nominal/structural), Memory models and safety guarantees across languages, Modern language ecosystems and interoperability (Python/C interop, Java Native Interface, WebAssembly), Language evolution case studies (C++ standardization, Python 2→3 migration, Rust for safe systems programming), Criteria for language selection in production systems based on performance, ecosystem, team expertise, and deployment constraints.

Top skills

C++PythonJavaJavaScriptSQLOperating SystemsCompiler DesignRoboticsEmbedded Systems

Structure

Semester4
Credits3 (3-0-0)
CategoryCore