This course provides students the fundamental features and concepts to different programming

languages. Topics include overview of programming languages, Introduction to language translation, type systems, data and execution control, declaration and modularity, and syntax and semantics.

                              TOPICS AND READINGS


                             Overview of Programming Languages

  • History of programming languages
  •  The variety of programming languages. Abstraction,

Programming in the large, software engineering. Compilers

and interpreters. Syntax and semantics. Context-free


  • An overview of Visual Basic. Control structures: conditionals, loops, case statements

                              Data types and their representation

·         Strong typing

·         Static vs. dynamic typing

·         Type declarations, type equivalence.

·         Sub types and derived types in Visual Basic.

·         Numeric types, scalar types

                                 Composite types

·         arrays

·         records

·         variants and unions

·         Strings. Pointers

·         access types and dynamic allocation



·         functions

·         procedures

·         Methods.

·         Parameter passing, scope and visibility.

·         Block structure and static scoping.

·         Nested procedures, implementation issues

                                     Program structure

·         Modules

·         packages, and interfaces.

·         Abstract types and information hiding

                                     Object oriented programming

·         Objects

·         Classes

·         data and function members

·         constructors and destructors

                                     Language summary: C Language

·         inheritance

·         dynamic dispatching

·         polymorphism

·         Multiple inheritance.

Generic programming and templates in Visual Basic and C++ Containers.

                                    Exception handling. Concurrent programming

·         threads

·         tasks

·         synchronization

·         communication.

Concurrency in Visual Basic and Java.

Functional programming: LISP and Scheme. The LISP interpreter


Functional programming in ML:

·         type inference, first-class functions.

The interesting parts of Java: the JVM

·         Interfaces and reflection

Prototyping and scripting. A modern hybrid language: Python or JavaScripting

  • Final Exam

                 This course provides an introduction to the concepts, theories and components that serve as the bases for the design of classical and modern operating systems. Topics include process and memory management, process synchronization and deadlocks.


At the end of this course, the student should be able to:

  1. describe relationships between system services and application software;
  2.  compare and contrast different design considerations for major OS components;
  3. state the key implementation techniques of operating systems including concurrent programming, resource management and scheduling, virtual memory and file systems.