This course comprises a semester-long project experience geared towards the development of skills to design realistic and practical embedded systems and applications. Students will work in teams on an innovative project that will involve the hands-on design, configuration, engineering, implementation and testing of a prototype of an embedded system of their choice. Students will be expected to leverage proficiency and background gained from other courses, particularly with regard to embedded real-time principles and embedded programming. The project will utilize a synergistic mixture of skills in system architecture, modular system design, software engineering, subsystem integration, debugging and testing. From inception to demonstration of the prototype, the course will follow industrial project practices, such as version control, design requirements, design reviews and quality assurance plans. The lecture content will cover background material intended to complement the project work, and will also leverage lessons learned from case studies of industrial practices and incidents. The remainder of the course will consist of regular team presentations of key project milestones, current project status, a final project presentation and functional demonstrations of various subsystems, even as the entire prototype is being developed.
Introduction to the principles of database management systems. Topics include database system architecture, data models, theory of database, query optimization, concurrency control, crash recovery, and storage strategies.
System Models- Entities, Attributes, States, Activities, Types of Models, Static & Dynamic Models, Deterministic & Stochastic Activities. Principles used in Modeling. System Simulation Continuous & Discrete event simulation Languages- GPSS, SIMULA, CSMP, DYNAMO. Probability concepts in Simulation- Random number, stochastic processes, Birth-Death process. Parameter estimation & input/output validation. Statistical Hypothesis Testing. Queuing Systems, M/M/I & M/M./m queues, Bulk arrival & Bulk service systems. Queuing networks. Computational algorithms & approximation techniques. Workload characterization & performance evaluation of computer systems. Evaluation of program performance. Case studies.
This course will cover functional and logic programming, concepts of programming language design, and formal reasoning about programs and programming languages. The topics included are: Functional Programming (ML/OCaml); Small-step and large-step operational semantics; Denotational semantics; Fixpoints, fixpoint induction; Axiomatic semantics; Type theory, Untyped and simply typed lambda calculus; Partial evaluation, non-determinism, Logic programming
Overview of Al, general concepts of knowledge, LISP and other Al programming languages.
Knowledge representation: Intelligent Agents: Agents that reason logically, Inference in First order Formalized symbolic logic, inconsistencies and uncertainties, probabilistic reasoning, structured knowledge, object oriented representation;
Knowledge organization and manipulation: search strategics and game planning, matching techniques, knowledge organization and management;
Introduction to selected topics in A!: Natural language processing, pattern recognition, computer vision, expert system, artificial neural networks, robotics..
Knowledge Acquisition: General concept, learning and automata, genetic algorithms, induction, analogical and explanation based learning.
Compilers, Lexical Analysis: Lexical Analysis, regular expressions, regular languages, syntax Analysis: syntax analysis, context free grammars, bottom-up parsing, LR (0) parsing SLR parsing, (LR (I) parsing, LALR (I) parsing, classification of context-free grammars and languages, syntactic error recovery, syntax direct definitions attributes evaluation, Abstract syntax trees, symbol Tables, type checking semantic cheek for Inheritance: Sub-typing, and for Overloading. Generation of intermediate code: Generation of intermediate code- translation of Boolean expressions, switch/case statements, run-time structures, Back patching Generation of unoptimized target code.
Introduction to code. optimization: control flow graphs, live-variable analysis, allocation optimized register allocation by graph coloring Available expression analysis, Global common sub-expression elimination, nominators, Loops in control flow graphs, Def-use & use-def chains, Loop-invariant, code motion, partial redundancy elimination, constant propagation, optimizing Object-oriented programs, copy propagation, phase ordering of optimizations, Instruction scheduling, optimizations for memory hierarchies.
Basics of Java, Threads and Sockets, JDBC, Serialization and reflection, Client Server programming, RMI and distributed computing, CORBA, Beans, Enterprise Java beans, XML Programming with Java, Java Servlets. The course includes lab works based on theory taught.
WANs and Router; Introduction to Routers; Configuring a Routers; Learning about other Devices; Managing Cisco IOS software; Routing and Routing Protocols; Distance Vector Routing Protocols; TCP/IP Suite Error and control messages; Basic Router Troubleshooting; Intermediate TCP/IP; Access control lists (ACLs) ; Case Study: Routing Case Study
This course will study some of the major areas related to software quality, including: Defining quality, Software quality assurance processes, Software quality standards, Software testing standards, SCRUM and Testing Frameworks, Unit Testing, Integration Testing, System Testing, CMMI, PSP, Extreme Programming.
There has been growing research interest in visual languages and visual programming. Its applications are diverse: visual user interface, visual specifications, visual reasoning, visual database systems and multimedia computing, to name but a few. This course will prepare the student to pursue research in these new and exciting fields of theory and application of visual languages.
The aim of the course is to give students basic information about the object-oriented programming concepts using C++ and MFC library, and to enable them to design and code visual programs using Visual Studio 2008.