Introduction to programming languages and principles of programming.
Topics: Introduction to computational approach to solving problems; concept of the algorithm; general organization of computer programs, flow charts; variables and data types; program flow and flow control; introduction to procedural programming, subroutines and functions; arrays and multidimensional arrays; common programming techniques, recursion; input/output and communicating with user inside a program.
Learning outcomes: Develop understanding of the basic concepts and structures used in programming and program organization; develop basic skills in solving computational problems and writing computer code.
Introduction to the modern state of the information technology.
Topics: Introduction to the modern state of the information technology; making use of word processors, spreadsheets, and visual presentation software; creating and publishing documents using a computer; efficiently presenting information in written, numeric, graphical, and visual form using a computer.
Learning outcomes: Develop basic skills for working with word processors, spreadsheets, and visual presentation software; develop basic skills in efficiently creating documents and visual presentations on a computer.
Advanced programming topics and object oriented programming.
Topics: Essential concepts of object oriented programming, structures, classes, properties, methods, objects; constructors, destructors, encapsulation, inheritance, polymorphism, operator overloading; templates; exceptions and exception handling; dynamic memory allocation and management; memory pointers; threads, basics of threaded programming; use of integrated development environments.
Learning outcomes: Become familiar with the main concepts and processes of object oriented programming; understand the concept of classes and their instantiations; understand the concept of inheritance, polymorphism, and encapsulation; understand the proper handling of exceptional situations in modern programming; understand the main concepts of threaded programming; develop skills in using integrated development environments; be able to solve computing problems using object-oriented code.
Practical work in a classroom by implementing one or several programming projects.
Learning outcomes: Improve the students’ practical programming skills.
Introduction to theory of algorithms, algorithm analysis, and data structures.
Topics: Introduction to abstract data structures, linked lists, stacks, queues, binary search trees, simple hashes, graphs; designing and applying appropriate data structures in computing problems; general strategies for developing algorithms for specific computing problems, iterative algorithms, recursions, divide and conquer, greedy algorithms; introduction to the principles of algorithmic complexity and algorithm analysis.
Learning outcomes: Become familiar with the basic abstract data structures and their usage; develop skills in designing and applying appropriate data structures for solving computing problems; develop skills in developing algorithms; be able to develop algorithms for simple computing problems.
Learning outcomes: Improve students’ practical programming and development skills.
Introduction to mechanisms and systems of modern computer operating systems such as WINDOWS, LINUX, iOS, and ANDROID.
Topics: Principles of organization of operating systems; resources, processes, and threads; concurrency issues, scheduling, synchronization, deadlocks; inter-process communication; memory paging and management; file system organization and management; networking organization and management; security and protection; overview of modern operating systems.
Learning outcomes: Become familiar with the principles of organization of modern operating systems; understand the principles of resource management, memory management, file management and network management in modern OS; understand the issues associated with multi-process environments in modern OS; understand basic issues of OS security; understand differences and similarities of modern OS.
Introduction to the concepts of systems analysis and design, analysis and specification of development processes and data modeling, and their application in information systems.
Topics: Design life cycle; definition of a system, system boundary and components; techniques for defining system design problems in organizational settings, identifying needs and problem requirements; problem decomposition and visualization; modular design; multistage design; data modeling; generation of criteria and solutions; feasibility analysis, bottlenecks and optimization; multi-objective decision making; structured project development approaches: PRINCE2, PRISM, CCPM, Event Chain methodology, Agile development, Lean development, eXtreme methodology, BRM; overview of UML (Unified Modeling Language).
Learning outcomes: Become familiar with the structured approach to system design; understand the design life cycle; understand the techniques for defining system design problems; understand different approaches for problem decomposition, visualization, modularization, data modeling and generation of solutions; know different modern project development approaches; develop skills in solving system design problems.
Overview of the principles of computer hardware and software.
Topics: Principles of organization of digital computers; binary and hexadecimal number systems, binary arithmetic; Von Neuman computer architecture; main computer components, CPU, memory, peripherals, IO; instruction set architectures; overview of assembly programming language; memory organization in computers, addressing modes, memory hierarchies, caching; quantitative evaluation of computer systems’ performance.
Learning outcomes: Become familiar with the principles of organization of digital computers; understand different computer components and their interactions; understand the principles of microprocessor code execution and different instruction set architectures; understand the principles of memory organization in modern computers.
Introduction to the fundamental organization of computer networks from the hardware and software perspectives. Structure of computer networks, computer network architectures, communication layers and protocol stacks.
Topics: Physical principles of data transmission in computer networks; network bridges and switches; classic computer network architectures; protocol stacks; link layer (frames and Ethernet), network layer (packets and IP), transport layer (sessions and TCP/UDP), application layer (HTTP); principles of IP, forwarding and addressing, IP packets and routers, transmission error control; principles of TCP, routing, host discovery, naming, congestion and flow control, queuing and queue management, routing algorithms; TCP and UDP comparison; overview of main network types, content distribution and multi-casts networks (CDN), P2P networks, overlay networks, enterprise networks, data-center networks, backbone networks, wireless networks, mobile networks; principles of security in networked environments, firewalls, secure communication protocols, keys and signatures; principles of network sockets and sockets programming; network address translation (NAT); virtual private networks (VPN); connection tunneling; domain name resolution (DNS); IPv6.
Learning outcomes: Become familiar with the fundamental principles underlying modern computer networks; understand the principles of physical and logical organization of modern computer networks; understand the protocol stacks and different communication layers in computer networks; know the protocols used in the Internet protocol suit; understand the principles and structure of TCP/IP.
Introduction to low level and system level programming, operating system level utilities and processes, and batch programming techniques.
Prerequisites: CSE103; CSE301
Topics: Specifics of low-level programming; execution of programs by OS; high-level computer architecture, registers, instruction cycle, caching, memory hierarchy and management, file IO, buffering, system calls; handling external devices and working with network, sockets; multi-process/multi-thread programs, process model and process management in OS; signals and signal handling by OS, inter-process communication; most important system level libraries and/or API’s in Linux/iOS/windows; most important system programming tools for Linux/iOS/Windows; compiling and linking programs; debugging programs and checking performance; basics of shell and batch programming in Linux/iOS/Windows.
Learning outcomes: Become familiar with the specifics of writing low-level programs; understand how programs are executed by OS; understand how multiprocess/multithread programs are executed by OS; know the most important tools and system-level libraries for major OS; be able to write, compile and debug simple OS-level programs.
Introduction to the concepts of numerical analysis and modeling of complex processes and systems.
Prerequisites: MAT202; MAT203
Topics: Graph theoretic system models; state space formulation; modeling large systems in terms of subsystems; exploring design space; modeling state equations; time-independent linear systems; state equation linearization; time and frequency domain; probabilistic modeling; structural modeling; techniques for numerical system modeling and simulation, overview of relevant software solutions; sensitivity and tolerance analysis; optimization approaches for system models.
Learning outcomes: Become familiar with advanced approaches for numerical system modeling and simulations; become familiar with state space models; understand basic approaches for designing, analyzing, and simulating numerical models of complex processes and systems; be able to develop, simulate and analyze simple numerical models of complex systems and processes.
Principles of software engineering, software life cycle, development phases, software development tools, basic principles of project management.
Topics: Principles and methods of software engineering in large systems; different software development models; organization and management of software projects, requirements solicitation, planning, documentation, schedule development, cost estimate, quality control, versioning; typical software development methodologies: rapid application development (RAD), computer aided software engineering (CASE), service-oriented architecture (SOA), agile and eXtreme methodologies, object-oriented analysis and design, rational unified process (RUP); modern software development and project management tools.
Learning outcomes: Become familiar with the principles and methods of software engineering in large software projects; develop skills in typical software engineering tasks including requirements solicitation, planning, documenting, scheduling, performing quality control and versioning; know different modern software development methodologies; develop ability to work in team and communicate ideas and concepts to team members.
Introduction to the concepts of telecommunication systems’ hardware and software, communication channels and signal coding/transmission, telecommunication systems hardware.
Topics: Principle of signal transmission in telecommunication channels; components of a communication system; signal encoding and decoding; signal modulation and demodulation; main modulation systems, AM, FM and PM analog systems; shift keying (ASK, FSK, PSK), pulse modulation (PAM, PWM, PPM, PCM) digital systems; effect of noise and error control; basics of sampling theory, bandwidth and data rate; filters; signal multiplexing technologies, TDMA, FDMA, CDMA, OFDM (orthogonal frequency-division multiplexing), MIMO (multiple-input and multiple-output)
Learning outcomes: Become familiar with the operation principles and organization of modern telecommunication systems; understand different components of telecommunication systems and their interactions; understand different methods of signal encoding and decoding; understand the effect of noise on telecommunication channels; understand the notion of bandwidth, data rate, sampling, modulation, demodulation, and signal multiplexing.
Introduction to the theory of relational databases and Structured Query Language.
Topics: Introduction to the theory of relational databases; relational algebra; relational design theory, normalization, indexes, CRUD (create, read, update, delete) principles; SQL query language, aggregates, null, joins, constraints, keys, triggers, views, indexes, transactions, stored procedures, recursion, authorization. Survey of no-SQL database systems, XML, JSON; business and presentation logic in database development; UML (Unified Modeling Language).
Learning outcomes: Become familiar with the theoretical principles of relational databases; understand the principles and methods of normalized relational database design; know the structures of SQL query language and their uses; understand the concept of business and presentation logic and business and presentation logic separation; be able to successfully design normalized relational databases; be able to write SQL code to solve database related computing problems
Analysis and development of algorithms in the context of Computer Science applications.
Topics: Introduction to significance of algorithms; methods for algorithms representation; algorithm design strategies, divide and conquer, greedy algorithms, pattern matching, combinatorial search and optimization, dynamic programming, approximation algorithms; principles of algorithm analysis, asymptotic notation, intractability, reductions, NP-completeness challenge.
Learning outcomes: Become familiar with the subjects and main topics of the theory of algorithms; understand the general approach to solving algorithmic problems; know typical algorithm design strategies; understand the principles of algorithm analysis, reduction, and intractability; be able to develop algorithms for advanced computing problems.
Advanced topics of modern computer and microprocessor systems’ architecture.
Topics: Execution of programs by computers; computer arithmetic; instruction set architectures, CISC/RISC, single-cycle/multi-cycle microarchitectures, dynamic scheduling, microprogramming; memory hierarchies, cache memory, virtual memory, memory management; pipelining, pipeline hazards; out of order execution, register renaming, branch prediction, speculative execution; superscalar architectures, instruction-set parallelism, thread-level parallelism, multi-core architectures, vector computers; simulation tools for microarchitectures; performance and metric measures for microarchitectures.
Learning outcomes: Understand principles of modern instruction set architectures; understand code execution by modern microarchitectures; understand memory organization and management in modern microarchitectures; understand issues associated with multi-core architectures; know and be able to use simulation tools for microarchitectures; know and be able to perform evaluation of performance of specific microarchitectures.
Introduction to computer aided graphic design systems.
Topics: Introduction to 3D sketching and visualization; principles of solid modeling; descriptive geometry; coordinate systems; 2D and 3D geometrical transformations; projections, views and viewports, isometric, oblique, perspective view, 6-view orthographic projections; parametric curves and surfaces; color models; graphics standards/formats; engineering drawing conventions; introduction to popular computer-aided design (CAD) software; drawing and sketching in CAD software; graphics transformation pipeline; hidden edges/surfaces removal; 2D clipping; quality control and iterative design.
Learning outcomes: Become familiar with the principles of 3D sketching and visualization using CAD software; understand geometric principles of 3D sketching and visualization; understand the principles of descriptive geometry used for CAD; understand the concepts of geometric transformations, projections and views; understand the concepts of curves and surface representation for CAD; understand different color models; know engineering drawing conventions; develop basic skills in working with modern CAD software; be able to create CAD visualizations for simple 3D sketching problems.
Theory of coding and signal processing for telecommunication channels.
Topics: Introduction to discrete-time signals and systems; signal sampling and aliasing; filters and filter design; Fourier and Z-transform; discrete Fourier transform; fast Fourier transform; representation of signals in frequency space; system behavior in terms of frequency content and frequency response; principles of information theory for communication channels, capacity of communication channel and noise; mixed analog-digital systems; recursive filters; linear time invariant systems and their analysis; continuous-time signals and systems.
Learning outcomes: Understand the concept of discrete-time signal or system; understand the concept of frequency space representation of signals; understand and be able to design, use, and analyze signal-processing filters; understand and be able to use discrete Fourier and Z-transform; understand and be able to use and analyze linear time invariant systems.
Principles and issues of high performance and parallel computing.
Topics: Parallel computer architectures; shared memory and distributed memory; parallel algorithms; methods in parallel algorithms, concurrency, locality, scalability, modularity, partitioning, agglomeration, communications, mapping, and synchronization; parallel programming MPI, threads, open MP; performance evaluation of parallel programs; SIMD architectures and vector computing.
Learning outcomes: Become familiar with the main principles and issues of high-performance and parallel computing; understand and be able to apply main methods of designing parallel algorithms; know the structures of MPI and be able to apply them; understand the principles of vectorized computing; be able to design and implement basic algorithms for parallel computing problems.
Advanced concepts of computer network design with focus on the issues associated with very large computer networks.
Topics: IP architecture principles and core protocols for congestion control, forwarding, naming, and routing in large networks; approaches to achieve reliability, scalability, and security; secure routing; design of data-center networks, multicast and content delivery networks, overlay networks, peer-to-peer networks, wireless networks; data-center services optimization; principles of network management; Internet measurements; software defined networks; future Internet architectures; delay and disruption tolerant networks (DTN); modern issues in networking and network research.
Learning outcomes: Understand networking problems and their solutions in the modern core internet protocols; understand main approaches to achieve scalability, reliability, and security in large networks; know the major types of large computer networks; understand the problems involved in management and maintenance of large computer networks; know the current issues in networking and network research.
Advanced concepts of relational and non-relational database systems design, database realizations and maintenance.
Topics: Overview of relational models, relational algebra, and SQL; introduction to ER modeling; storage and indexing; physical representation of data in databases; details of SQL query processing and optimization; concurrency issues; distributed databases; the concept of replication; Big Data problem, data warehousing; non-SQL databases; XML query engines.
Learning outcomes: Become familiar with the advanced topics of relational database design and implementation; understand the details of the hardware and software involved in storing data in DB and their interactions; understand the issues affecting DB performance and methods for DB optimization; understand the issues affecting scaling DB to very large sizes; have basic understanding of modern non-SQL databases and query engines.
Principles of 2D and 3D graphical data processing in computer systems, raster graphics, vector graphics, image and video compression.
Topics: Introduction to computer graphics systems; graphics primitives, points, vectors, distances, etc.; principles of color, composition, and spatial relations in graphical design; image transformations; hierarchical models; viewing transformations, projection; curve modeling, surface modeling, freeform curves and surfaces; polygonal meshes; triangulation meshes; solid modeling; principles of 3D rendering; textures; viewports and clipping; lighting and shading; ray tracing; graphics pipeline; principles of animation, keyframes, kinematics, and dynamics; image formats, compression; openGL; programmable graphics hardware.
Learning objectives: Understand the principles involved in representing and manipulating graphics in digital form; know and understand graphics primitives; know and understand color spaces; know and understand different viewing projections; know and understand most common methods for curve, surface, and solid modeling; understand the process of 3D rendering; understand the principles of 3D animation; develop skill in working with popular 3D graphics software; be able to create simple 3D models using 3D graphics software; be able to design simple 3D animations using 3D graphics software.
Introduction to numerical methods and computational modeling.
Prerequisites: MAT102, MAT201
Topics: Introduction to machine-based numerical computation for solving computing problems; floating point arithmetic, conditioning and stability of numerical computations; systems of linear equations, LU, Cholesky, QR and SVD factorization, finding matrix’s eigenvalues; regression and curve fitting, interpolation of functions; numerical integration in 1D; integration of simple differential equations; nonlinear equations and their roots; numerical optimization methods; Fourier and wavelet transforms.
Learning objectives: Become familiar with basic numerical methods employed in solving computational and engineering problems; be able to implement simple numerical methods; be able to apply numerical methods to solve simple computational and engineering problems.
Introduction to programming and numerical modeling in Matlab.
Topics: Matlab’s data structures, arrays, vectors, matrices, and operations with them; essential matlab packages and functions; solving simple problems using built-in packages, plotting and visualization, sorting, nonlinear equations, integration, differential equations, curve fitting, filters, spectral analysis, statistics; basics of programming with matlab, main operators, conditionals, loops, user-defined functions, cell-arrays, structures and structure arrays, IO operations; code vectorization and vectorization-related performance issues in Matlab; efficiency and optimization of Matlab programs, compiled functions and mex; memory managing issues; debugging Matlab programs, profiler tool; developing and evaluating numerical models in Matlab, Simulink;
Learning outcomes: Become familiar with capabilities and typical use patterns in Matlab; know different Matlab data structures and essential built-in functions and packages; be able to utilize Matlab data structures and built-in functions and packages to solve basic computing and engineering problems; become familiar with principles of programming in Matlab; know specific issues affecting programs for Matlab; be able to use Matlab programs to solve basic scientific and engineering problems.
Principles and structures of a second programming language.
Topics: Introduction to a second programming language; names, variables, flow control, functions, objects and classes; data abstractions, data types and data implementations; arrays; memory management; correctness, robustness, and efficiency issues; IO, streams, files, networking, threads, multiprocessing; GUI programming; libraries.
Learning outcomes: Become familiar with essential structures of a 2nd programming language and their uses; develop understanding of main issues involved in writing code in that programming language; know and be able to use relevant libraries in that programming language; develop ability to write programs in 2nd programming language for solving complex computational problems; develop skills in using modern IDE for code development.
Principles and structures of Java programming language.
Topics: Introduction to Java programming language; names, variables, flow control, functions, objects and classes in Java; data abstraction, data types and data implementations in Java; arrays; memory management in Java; correctness, robustness, and efficiency issues of Java programs; linked data structures and recursion; collection classes; advanced IO, streams, files, networking, threads and multiprocessing; GUI programming; overview of main packages.
Learning outcomes: Become familiar with essential structures of Java programming language and their uses; develop understanding of main issues involved in writing Java code; know and be able to use main Java packages; develop ability to write programs in Java for solving complex computational problems; develop skills in using modern IDE for Java development.
Principles and structures of C/C++ programming language.
Topics: Introduction to C/C++ programming language; names, variables, flow control, functions, objects and classes in C/C++; data abstraction, data types and data implementations in C++; arrays and strings; pointers; memory management; IO in C/C++, streams, files, networking; inheritance and composition; polymorphism; overloading; threads and multiprocessing; header files, libraries, and linking; preprocessor directives; compiling C/C++ programs; class templates; encapsulation and reusability; GUI programming.
Learning outcomes: Become familiar with essential structures of C/C++ programming languages and their uses; develop understanding of main issues involved in writing C/C++ code; know and be able to use main C/C++ packages; develop ability to write programs in C/C++ for solving complex computational problems; develop skills in using modern IDE for C/C++ development.
Web programming languages, web frameworks and modern web application development techniques.
Principles and structures of visual basic programming language.
Topics: Introduction to visual basic; names, variables, flow control, functions, objects and classes in visual basic; data abstractions, data types and data implementations; arrays and strings; memory management; IO, files, networking; threads and multiprocessing; essential libraries; GUI programming.
Learning outcomes: Become familiar with essential structures of visual basic programming languages and their uses; develop understanding of main issues involved in writing visual basic code; know and be able to use main visual basic packages; develop ability to write programs in visual basic for solving complex computational problems; develop skills in using modern IDE for visual basic.
Principles and structures of C# programming language.
Topics: Introduction to C# programming language; names, variables, flow control, functions, objects and classes in C#; data abstraction, data types and data implementations in C#; arrays and strings; memory management; IO, files, networking; threads and multiprocessing; GUI programming.
Learning outcomes: Become familiar with essential structures of C# programming languages and their uses; develop understanding of main issues involved in writing C# code; know and be able to use main C# packages; develop ability to write programs in C# for solving complex computational problems; develop skills in using modern IDE for C# development.
Principles and structures of .Net programming framework.
Topics: Introduction to .NET framework; objects, inheritance, polymorphism; design patterns; NHibernate in .NET; creating web applications in .NET; multilingual applications; security issues; database programming in .NET;. ASP .NET; overview of VB .NET and C# .NET.
Learning outcomes: Become familiar with essential structures in .NET and their uses; develop understanding of main issues involved in writing code for .NET; develop ability to write programs using .NET for solving complex computational problems.
Learning outcomes: Improve the students’ practical programming and project development skills.
Semester research project.
Principles and issues of the security of modern information systems, encryption theory, security policies, vulnerabilities and hacking.
Topics: Information systems security terminology, threats, weak points, security assessment criteria; data transmission security; database security; OS security; principles of encryption and cryptography, plaintext, ciphertext, symmetric cryptography, asymmetric cryptography, digital signatures; RSA, Diffie-Hellman, and DSA algorithms; SSL/TLS protocols; authentication and access control; security auditing and intrusion detection; information security policies; multi-level security architectures; firewalls and VPN; risk identification, assessment, and management; common security threats; overview of modern security packages, Kerberos, IPsec.
Learning outcomes: Understand basic concepts of information systems security; understand different security threats and vulnerabilities; understand security protocols and mechanisms for provision of secure services; be able to perform analysis of a security problem and propose solutions; know modern security packages.
Principles and methods of machine data mining and data mining applications.
Topics: Introduction to data mining; itemsets and rules, frequent itemset mining; closed and maximal sets; mining rules; pattern growth algorithms; support bounding techniques; data classification, decision trees; relational data mining, association rule mining; probabilistic data mining; clustering; time-series mining; data reduction, exploration, and visualization; WEKA software.
Learning outcomes: Understand the basic concepts of data mining; know and be able to apply itemset based data mining approaches; know and be able to apply relational data mining approaches; know and be able to apply probabilistic data mining approaches; know and be able to apply time-series data mining approaches.
Principles and methods of artificial intelligence and machine learning approaches.
Topics: Introduction to the subject of artificial intelligence (AI); intelligence as a search, heuristic search; representation of knowledge, propositional logic, logical programming, expert systems; introduction to fuzzy logic; different modern machine learning approaches; prediction and classification; decision surfaces; linear models; graphical models; Markov models; Markov networks; Bayesian networks; belief networks; naïve Bayes models; factor graphs; constraint satisfaction problem; supervised and unsupervised learning; reinforcement learning; loss minimization; minimization by gradient descend.
Learning outcomes: Become familiar with the modern and past state of the field of Artificial Intelligence; understand main types of AI approaches; understand the principles of modern machine learning approaches; be able to apply AI and machine learning approaches to simple problems.
Overview of low-level and high-level programming languages in the context of interactions of software and hardware.
Topics: Instruction set architectures, instructions cycles, register files; basic components of modern hardware devices, memory, memory hierarchies, caching, memory addressing modes, DMA, I/O, UART; real-time issues, the process model, process state and context, threads, scheduling, virtualization/ isolation; interrupts, multi-level interrupts; system calls; asynchronous signaling; memory-mappers; microkernels; interpreters; emulators; principles of assembly programming; principles of C programming, pointers, arrays, strings, memory management, structs, compilation, linking, libraries.
Learning outcomes: Become familiar with the principles of organization of modern hardware and the low-level interactions between hardware and software; know and understand different components of modern hardware devices; know and understand the main issues of low-level hardware-software interactions; be able to create basic hardware-software interfaces in C.
Principles of software project management, software development cycle, tools, agile development.
Topics: Software development life cycles; requirements and specifications; project planning and management techniques; time and cost estimation; tracking and controlling deliverables; project documentation; project testing; version control; main software design patterns; software architecture, quality and metrics; principles of business case development; different software project management methodologies; different approaches for managing and optimizing the software development process; techniques for managing different phases of project development; project management tools. The course emphasizes the development of practical skills of being a part of managing a large software project.
Learning outcomes: Know and understand the software development life-cycle; know and understand different project management methodologies; know and be able to apply appropriate principles of software engineering and tools during every phase of software life-cycle; develop skills in planning, managing, and documenting software projects; develop skills required for different positions involved in the software development such the team leader, designer, and tester.
Introduction to the concepts of wireless telecommunication systems hardware and software, local area networks, ad hoc networks, cellular networks, resource allocation, introduction to advanced topics of wireless telecommunications – vehicular networks, sensor networks, etc.
Prerequisites: CSE304, CSE308
Topics: Introduction to radio communication channels, radio signal propagation, radio antennas, transmitters and receivers; introduction to signal modulation, baseband modulation, PSK, FSK, carrier frequency, bandwidth, and data rate; different wireless telecommunication networks, wide-area networks (WAN), local-area networks (LAN), ad-hoc networks, mobile networks; wireless communication standards and protocols, IEEE 802.11, Bluetooth, 2G, 3G, 4G; high-level network services, routing, naming, security; signal encoding and medium access control (MAC), TDMA, FDMA, CDMA, ALOHA, CSMA, MACA, PRMA; principles of TCP/IP in mobile environments, routing and mobile IP; multi-hop wireless networks; principles of cell-networks design, frequency reuse, cells, microcells, sectorization, cell splitting, trunking efficiency.
Learning outcomes: Understand the physical principles underlying wireless telecommunication networks; understand different methods for signal modulation in wireless telecommunication systems; know and understand different signal multiplexing methods; know and understand different wireless telecommunication standards and protocols; understand problems and solutions of TCP/IP in mobile environments.
Introduction to the concepts of distributed computing systems.
Topics: Distributed operating systems; process communication protocols; concurrency; synchronization; scheduling; exceptions and deadlock resolution; web-based distributed client-server systems; distributed computing environments; distributed computing paradigms; client-server and master-slave architectures; distributed object-based systems; distributed file-systems; socket API.
Learning outcomes: Become familiar with essential concepts of distributed computing; know and understand the principles of process communication protocols, process concurrencies, synchronization, and scheduling; know and understand the principles of modern web-based distributed computing systems.
Concepts of ultra-large-scale Internet-based information systems, three-tier architecture, distributed transaction management, web services, scalability and availability issues.
Topics: Introduction to ultra-large-scale systems; large-scale Internet-based information systems; three-tier architecture; edge caches; distributed transaction management; workflows; web services; performance scalability issues in Internet-based information systems, high-availability issues in Internet-based information systems.
Learning outcomes: Become familiar with the issues involved in designing ultra-large scale Internet-based information systems; know and understand the principles of multi-tier software architecture; know and understand the problems and current solutions for large scale distributed transaction management; know and understand the problems and current solutions for large scale systems’ scalability and availability; know the current state of the ultra-large-scale systems development and research.
Techniques, tools, and the important issues of large-scale data storage and data warehousing.
Topics: introduction to the methods for large-scale data storage and maintenance; physical organization of large-scale data storage; data warehousing; principles of high-availability redundant data storage; strategies for redundancy and availability; RAID; popular data storage and maintenance software and hardware solutions; distributed data storage; introduction to the modern concept of the “cloud”.
Learning outcomes: Understand the issues associated with reliable storage of data; know and understand the details of physical organization of large-scale data storages; know and understand the methods for achieving data redundancy; know and be able to apply existing data storage and maintenance software and hardware solutions.
Introduction to modern relational and non-relational database systems – MySQL, PostGRE, SQL Server, Oracle, couchDB, mongoDB.
Topics: Overview of the features of modern relational and non-relational database management systems (DBMS); cost and resource demands of different DBMS; DBMS maintenance, efficiency and scaling; DBMS configuration and administration; data integrity issues; data backups; high-performance DB, replication; overview of mySQL, postGRE, SQL server, Oracle, couchDB, mongoDB.
Learning outcomes: Know and understand the organization and operation principles of modern DBMS; know and understand the issues affecting performance of DBMS and approaches to DBMS optimization; know the issues involved in scaling DB; know advantages and disadvantages of different modern DBMS.
Principles of graphical user interface design in computer and web systems.
Topics: The essentials of the human-computer interactions theory; human cognitive limitations; syntactic and semantic knowledge; usage patterns; transitionality; outside-in approach; principles of UI design, command interfaces, menus, forms, desktop views, error messages, GUI; methods for representing and displaying data using trees, charts, etc.; color use issues in GUI; visual styles and aesthetics; data entry issues in GUI; UI prototyping and modeling; GOMS; task modeling, object-action interfaces, task-action grammars; constraint-based UI design; organizing UI content, navigation, and layout; UI quality evaluation and iteration; user-friendliness, ergonomic, web 2.0; issues of design for mobile devices.
Learning outcomes: Know important principles of UI design; be able to perform usability testing and quality evaluation of UI; develop skills in working as a part of UI design team; be able to design simple UI for a specific task; be able to document and present a completed UI designs.
Embedded systems’ design flow, hardware-software interfaces, real-time issues, modeling, design, and debugging tools. Hardware-software integration.
Topics: Embedded systems design and design cycle; project planning, derivation of requirements; basic electronic circuit diagrams; instruction set architectures; registers and memory access, EPROM; low-level IO; timers; CPU busses; communication protocols (UART, SPI, I2C); analog inputs, digital-to-analog and analog-to-digital conversion; interrupts and interrupt service routines (ISRs); microprocessor supervisory circuits; development and debugging strategies; schematics and wiring diagrams; board layout principles; reading data sheets; hardware/firmware partitioning; code development process; embedded algorithms; embedded OS; peripherals, sensors, feedback control; interfacing different logic families, interfacing peripherals; testing and development tools, tolerance margins in design, speed constraints; circuit debugging; design verification, report generation.
Learning outcomes: Understand the important principles of the embedded systems design; understand the embedded systems design cycle; be able to identify, design, and implement necessary hardware for specific embedded systems; be able to identify, design, and implement necessary software for specific embedded systems; be able to test and debug an embedded system design; be able to document an embedded system design; be able to work as a part of a design team and communicate effectively ideas to team members.
Introduction to information systems administration.
Prerequisites: CSE303, CSE305
Topics: User account management and auditing; servers configuration and auditing; configuring and maintaining system services; configuring and maintaining file systems; firewalls and firewall management; installing ,configuring, and maintaining major OS; issues of data warehousing, capacity planning, and load balancing; security and disaster preparedness; specifics of system administration on Windows and Linux platforms; working with log files; scripting and automation; essentials of network administration; managing shared services, printing, DHCP, ftp, http, DBMS; data center management.
Learning outcomes: Know and understand the important issues involved in administration of information systems; be able to perform typical system administration tasks on Windows and Linux; know the typical techniques and practices of system administration and typical errors committed by system administrators; know specifics of database administration on major OS.
Introduction to databases administration on modern database systems.
Prerequisites: CSE316, CSE414
Topics: Architecture of modern DBMS; principles of logical and physical storage of data in DBMS; setting up and securing DB servers; managing DB users, permissions and privileges; security policies; managing and maintaining DB indexes, tables, and constraints; essentials of network administration; data security through backups and restoration, failure recovery, export and import of data, DB migration, DBMS upgrade issues; tracking DB performance and performance troubleshooting; DBMS optimization; working with log files; working with configuration files; automation and shell scripting; typical DB administrator (DBA) roles – VP of DBA, developer DBA, production DBA, DBA overseeing; scaling modern DBMS.
Learning outcomes: Know and understand the important issues involved in administration of modern DBMS; be able to perform typical database administration tasks on Windows and Linux; know the typical techniques and practices of database administration and typical errors committed by database administrators; know specifics of database administration on major DBMS.
Introduction to network administration in modern networks.
Prerequisites: CSE304, CSE315
Topics: LAN architecture and composition; PC and NIC troubleshooting; troubleshooting LAN problems; troubleshooting LAN lines; essentials of Ethernet, Ethernet family trees, Ethernet and layer 2 devices, OSI layers; TCP/IP graphs, frames, token ring, different network logical and physical topologies, FDDI, MDF/IDF, planning structured cabling installation, installing, terminating, testing, and troubleshooting CAT 5 UTP cabling runs; routing in LAN, ARP and RARP network processes; major LAN protocols, IP, TCP, UDP, protocol stacks; network monitoring, bandwidth analysis; directory services, network file systems, common network operating systems, X.500, LDAP and derivatives, active directory services; network security, firewalls, securing networks, IPsec, managing users, groups, and policies; managing shared services, printing, DHCP, ftp, http, DBMS; network optimization; VPN; PPP.
Learning outcomes: Know and understand the important issues involved in administration of computer networks including hardware and software; know physical principles of Ethernet and Ethernet design, installation, and troubleshooting; be able to perform typical network administration tasks; know the typical techniques and practices of network administration and typical errors committed by network administrators.
Principles and methods of image processing in computer applications.
Topics: Digital image model, sampling and quantization; color spaces; discrete Fourier and Cosine transform; image enhancement techniques, histogram, histogram equilibration, contrast and brightness; image filters; filters in frequency domain; wavelets, Haar transform; image denoising, deblurring, smoothing, sharpening; image segmentation, edge and boundary detection, thresholding, motion segmentation; morphological image processing, dilation and erosion, opening/closing; feature extraction in images; image understanding and machine vision.
Learning outcomes: Become familiar with the topics, problems, and the current state of the field of image processing; know and understand the concept of image filtering and image filters; know and understand the essential concepts of morphological image processing; be able to apply basic image processing techniques for simple image processing problems.
Software design in systems with real-time constraints.
Topics: Introduction to real-time software systems; soft and hard real time; timing analysis of real-time systems; uniprocessor scheduling, static scheduling, dynamic scheduling, priority scheduling, time-driven scheduling, deadline scheduling; deadlock detection, avoidance and recovery; preemptive and nonpreemptive systems; resource allocation; multi-process applications, concurrency, synchronization, resource sharing; multiprocessor scheduling; real-time OS; interrupts and interrupts handling; hybrid real-time/nonreal-time systems; performance measures; distributed and parallel real-time systems, real-time communications; communication architectures and protocols for distributed real-time systems.
Learning outcomes: Know and understand commonly used abstract models and terminology for real-time scheduling and resource management; be able to recognize, classify, and formulate the hard and soft timing requirements of a software system; be able to select an appropriate software architecture and combination of scheduling techniques for specific real-time system; be able to design and implement a set of real-time tasks.
Introduction to cellular networks’ organization and operation principles.
Topics: Introduction to cellular networks, frequency reuse, cells, microcells, wireless-wireline interworking, physical and logical channels; cellular communication standards and protocols, GSM, GPRS/EDGE, DECT, UMTS, LTE, 2G, 2.5G, 3G, 4G; wireless medium access control (MAC), TDMA, FDMA, CDMA, etc.; TCP/IP in mobile networks, mobility management, mobile IP, SIP and SCTP, mobile TCP, geographical routing, traffic and mobility models; mobile ad-hoc networks; wireless personal area networks (Bluetooth, etc.); satellite mobile networks; mobile broadcast systems, digital radio and video; mobile network deployment, sectorization, cell splitting, network access and performance evaluation, quality of service, trunking efficiency, radio and network resource management.
Learning outcomes: Become familiar with the important principles of organization and operation of modern mobile networks; know and understand the hardware used in cellular networks; understand the major issues involved in design and operation of mobile networks; know and understand different cellular communication standards and protocols; know and understand the principles of TCP/IP in mobile environments; know and understand the principles of performance evaluation and optimization in modern cellular networks.
Introduction to the modern problems of robotics.
Topics: Different types of robot systems, robot control systems, applications of robotic systems; robot components, DC motors, stepper motors, gearboxes, drive electronics, servo motors, AC motors, suspensions, effectuators and actuators, sensors, RF controls, microcontrollers, batteries and power sources; interfacing subsystems; physics of robot motion; locomotion problem; manipulation problem; joint motion; simple and complex sensors; feedback and control systems, trajectory planning, position control, force control, deliberative control, hybrid control, behavior based control; control and behavior coordination; end-of-arm tooling.
Learning outcomes: Become familiar with the current state, problems, and solutions in the field of robotics; know and understand the important components of robotic systems, their interactions and interfacing; know and understand the problem of robot motion and robot motion control; be able to solve simple instances of robot control problems; be able to create simple robotic designs; be able to work as part of design team and communicate effectively ideas to team members.
Introduction to modern theory of numerical optimization.
Topics: General optimization problem; Newton-Raphson method; line search; trust regions; quasi-Newton methods; Levenberg-Marquartd method; optimization by gradual descend; conjugate gradient descent; constrained optimization, Lagrange method; KKT-theory, duality; interior point methods; barrier methods; convex optimization theory; linear programming; quadratic programming; sequential linear and sequential quadratic programming; integer programming; dynamic programming; transport optimization; separable programming; stochastic programming; goal programming; sensitivity analysis, robust optimization; multi-objective optimization, branch and bound approaches; genetic algorithms; issues of on-line optimization,
Learning outcomes: Know and understand the most important approaches for solving numerical optimization problems; be able to apply various optimization techniques for solving simple numerical optimization problems.
Introduction to pattern recognition and its modern applications.
Topics: Bayes decision theory; pattern modeling and estimation; template matching; discriminant functions and decision surfaces; ROC curves; linear model based classifiers, support-vector-machines; artificial neural networks; non-metric pattern classification, decision trees; essentials of Bayesian parameter estimation, maximum likelihood, expectation-maximization, sufficient statistics; features discovery and selection, curse of dimensionality, dimension reduction methods; modeling sequential patterns, state-space models, hidden Markov models; HMM parameter estimation, Kalman filtering; elements of non-parametric statistics, kernel-density estimation, K-nearest neighbors, Parzen-window, Gaussian mixtures, radial basis neural networks; unsupervised learning and clustering, criterion functions for clustering, K-means, hierarchical clustering, cluster validation; Baeysian and belief networks; boosting and AdaBoost; committees of machines classifiers.
Learning outcomes: Become familiar with the current state of the field of pattern recognition; know and understand the statistical foundations of the modern patter recognition theory; understand main approaches in modern pattern recognition; be able to apply various patter recognition approaches to solve simple pattern recognition problems.
Advanced topics from numerical methods and computational modeling.
Topics: Solution of a systems of nonlinear equations; matrix eigenvalue problem; advanced gradient descent, conjugate gradient descent; partial differential equations and boundary value problems, multi-grid methods; curve fitting, regression, and nonlinear regression; discrete Fourier transform; methods of constrained nonlinear convex optimization, interior point and barrier methods; accuracy and stability of numerical methods; methods for modeling continuous systems; large scale numerical methods.
Learning objectives: Become familiar with the advanced numerical methods including solving systems of nonlinear equations, performing nonlinear constrained optimization, solving partial differential equations and boundary value problems, and modeling continuous systems; be able to implement simple numerical methods in computer code; understand the issues of numerical accuracy and stability and be able to perform numerical stability analysis of a computational problem; be able to apply advanced numerical methods to complex computational and engineering problems.
Prerequisites: CSE201, CSE307
Learning outcomes: Improve the students’ practical programming and software project development skills.
Semester research project.