• COURSE DESCRIPTION
      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

  • PRELIM

                             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

grammars.

  • 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


  • MIDTERM

                                  Subprograms

·         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


  • PRE-FINAL

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.