An introductory course covering: Logic, formal reasoning, propositional ?logic, sets, growth of functions, algorithmic complexity, number theory, mathematical induction, ?combinatorics, recurrence, generating functions, relations, graphs, and models of computation.
COMP 110 is a first course in computer programming. The objective is to introduce the principles of computer programming and algorithm development using Matlab, with particular emphasise on scientific computation and data processing. Topics covered include basic computer literacy and organization; variables, operators, expressions, data types, arrays, matrices; conditional and repetition control statements; modular programming, built-in and user-defined functions; string manipulation; text and binary file processing; structures; debugging; data plotting and visualization; graphical user interfaces.
This course is a general introduction to programming using the Java programming language. It emphasizes the structured programming language aspects of Java and de-emphasizes its object-oriented aspects. The latter are covered only to the extent that enables students to use standard Java libraries for common tasks. Students who complete this course successfully should gain a solid foundation in algorithmic thinking and structured programming, and should be able to perform basic, common computational tasks easily and efficiently.
Introduction to imperative programming. Compiling and executing programs. Control statements: Conditional, branching and looping constructs. Methods and functions. Recursion. Basic algorithmic techniques. Arrays. Abstract Data Types, Classes, Objects. Inheritance. Strings and Characters. Iteration. Packages. Access and Visibility Control. Exceptions and Exception Handling. Files and Streams. Selected standard packages and utilities. Introduction to Graphical User Interfaces.
Advanced programming techniques and large scale programming. Inheritance and Type Hierarchies. Polymorphism. Object-oriented Programming. Code reuse. Graphical User Interfaces. Advanced class and template libraries. Introduction to low-level languages. Pointers and references. Resource management: Dynamic storage allocation, memory management. Virtual functions.
Introduction to core software engineering concepts. Control of complexity in large programming systems. Building abstractions with procedures and data. Modularity, objects and state. Machine models, compilers and interpreters. Concurrency.
Basic data structures, algorithms, and their computational complexity. List, stack, queue, priority queue, map, tree, balanced tree, hash table, heap, skip list, trie, graph. Basic search, selection, sorting, and graph algorithms. Recursion.
Engineering problem solving and design using C programming language. The course will cover basic syntax/grammar and concepts of C programming language, including control flow, functions and modular programming, static and global variables, pointers and memory addressing, arrays and pointer arithmetic, strings and searching and sorting, followed by example engineering analysis and design problems, including electric circuit analysis, digital signal processing, machine learning, finance, and data analysis.
A minimum of 20 working days of training in an industrial summer practice program after the completion of second year. The training is based on the contents of the "Summer Practice Guide Booklet" prepared by each engineering department. Students receive practical knowledge and hands-on experience in an industrial setting.
Programming languages (i.e. C++, Java, Ada, Lisp, ML, Prolog), concepts and paradigms. Syntax, semantics. Abstraction, encapsulation, type systems, binding, run-time storage, sequencers, concurrency, control. Providing examples from functional, object-oriented and logic programming paradigms.
Review of methods and tools used in software development. Object oriented design and open software architectures. Requirements analysis, design, implementation, testing, maintenance and management. Engineering applications.
Hardware organization of computers. Computer components and their functions. Instruction sets, instruction formats and addressing modes. Pipelining and pipeline hazards. Instruction level parallelism. Assembly and machine language. Data and control paths. Computer arithmetic. Floating point representation. Memory hierarchy, cache organization and virtual memory. Parallel architectures.
Introduction to operating systems concepts, process management, memory management, virtual memory, input-output and device management, file systems, job scheduling, threads, process synchronization, deadlocks, interrupt structures, case studies of operating systems.
Advanced topics in algorithms, and their computational complexity. Amortized complexity analysis. Randomized algorithms. Greedy algorithms. Dynamic programming. Linear programming. Advanced graph algorithms. Turing machines and models of computation. NP-completeness reductions.
Introduction to database management systems, file structure, organization and processing, sequential files, direct files, sort/merge, indexed and hash files, relational data model, logical database design, entity-relationship data model, data description and query languages.
Microcomputer fundamentals including architecture and operation of a typical microprocessor; bus organization; instruction set; addressing modes; analysis of clocks and timing; interrupt handling; memory (RAM and ROM); DMA, serial and parallel input/output; assembly language programming.
This course covers programming environments and languages over mobile devices. Mobile device architectures and environments, MIDP Application Model, User Interface Libraries, High Level User Interface Components, Low Level User Interface Libraries, MIDP Persistance Libraries. Mobile device operating system environments. Operating Systems such as Symbian, Android, Mobile Windows.
Introduction to artificial intelligence concepts; agent based thinking; uninformed and informed search; constraint satisfaction; knowledge representation; logic; introduction to machine learning and its relation to artificial intelligence; representing uncertainty; markov decision processes; examples from vision, robotics, language and games.
Investigation of one or more topics of interest with the guidance of an instructor. Presentation of a research proposal at the end of the term.
A minimum of 20 working days of training in an industrial summer practice program after the completion of third year. The training is based on the contents of the "Summer Practice Guide Booklet" prepared by each engineering department. Students receive practical knowledge and hands-on experience in an industrial setting.
Sound and human speech systems, phonetics and phonology, speech signal representations, role of pitch and formants, pitch-scale and time-scale modifications, basics of speech coding and VoIP systems, fundamentals of pattern and speech recognition, search algorithms for speech recognition.
Study of computational models of visual perception and their implementation in computer systems. Topics include: image formation; edge, corner and boundary extraction, segmentation, matching, pattern recognition and classification techniques; 3-D Vision: projection geometry, camera calibration, shape from stereo/silhouette/shading, model-based 3D object recognition; color texture, radiometry and BDRF; motion analysis.