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.
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.
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.
Object oriented programming using Java. Data types, expressions, control statements, strings, arrays. Classes, objects, methods, overloading, variable scope, memory. Recursion. Inheritance, polymorphism, abstract classes, interfaces, nested classes, anonymous classes. Exception handling. Strings and regular expressions. File I/O. Generic collections. Generic classes and methods. Lambdas and streams. Event-driven programming. Multithreading.
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.
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.
Conceptual and practical aspects of databases and database management systems. Entity-relationship model, relational model, relational algebra, Structured Query Language (SQL), normal forms and normalization, transaction management, scheduling and serializability, concurrency control and locking, indexing, recent trends in databases and NoSQL.
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.
Fundamental concepts of parallelism. Overview of parallel architectures, multicores, heterogeneous systems, shared memory and distributed memory systems. Parallel programming models and languages. Multithreaded, message passing, data driven, task parallel and data parallel programming. Design of parallel programs, decomposition, granularity, locality, communication, load balancing, and asynchrony. Performance modeling of parallel programs, sources of parallel overheads.
Applications of artificial intelligence in user interfaces. Design, implementation, and evaluation of user interfaces that use machine learning, computer vision and pattern recognition technologies. Supporting tools for classification, regression, multi-modal information fusion. Gaze-tracking, gesture recognition, object detection, tracking, haptic devices, speech-based and pen-based interfaces.
Advanced topics in data structures, algorithms, and their computational complexity. Asymptotic complexity measures. Graph representations, topological order and algorithms. Forests and trees. Minimum spanning trees. Bipartite matching. Union-find data structure. Heaps. Hashing. Amortized complexity analysis. Randomized algorithms. Introduction to NP-completeness and approximation algorithms. The shortest path methods. Network flow problems.
Tools and techniques for ensuring software reliability. Specification formalisms and languages. Modeling tools and languages. Unit and integration testing. Automated testing and verification tools and algorithms. Mathematical representations for programs and executions. Hoare logic. Specification using modular contracts: Preconditions, postconditions, loop and object invariants. Ownership systems. Automated test generation. Model-based testing. Coverage metrics for testing adequacy. Type and effect systems for reliable software. Software model checkers. Static analysis. Concurrent/multi-threaded programs. Correctness criteria for concurrent programs: race-freedom, atomicity, linearizability and serializability. Testing, verification and debugging tools for concurrent programs.
A capstone design course where students apply engineering and science knowledge in a computer engineering design project. Development, design, implementation and management of a project in teams under realistic constraints and conditions. Emphasis on communication, teamwork and presentation skills.
Entropy, Relative Entropy and Mutual Information; Asymptotic Equipartition Theory; Entropy Rates of a Stochastic Process; Data Compression; Kolmogorov Complexity; Channel Capacity; Differential Entropy; The Gaussian Channel; Maximum Entropy and Spectral Estimation; Rate Distortion Theory, Network Information Theory.
Fundamental concepts of concurrency, non-determinism, atomicity, race-conditions, synchronization, mutual exclusion. Overview of parallel architectures, multicores, distributed memory. Parallel programming models and languages, multithreaded, message passing, data driven, and data parallel programming. Design of parallel programs, decomposition, granularity, locality, communication, load balancing. Patterns for parallel programming, structural, computational, algorithm strategy, concurrent execution patterns. Performance modeling of parallel programs, sources of parallel overheads.
Applications of artificial intelligence in user interfaces. Design, implementation, and evaluation of user interfaces that use machine learning, computer vision and pattern recognition technologies. Supporting tools for classification, regression, multi-modal information fusion. Gaze-tracking, gesture recognition, object detection, tracking, haptic devices, speech-based and pen-based interfaces.
Advanced topics in data structures, algorithms, and their computational complexity. Asymptotic complexity measures. Graph representations, topological order and algorithms. Forests and trees. Minimum spanning trees. Bipartite matching. Union-find data structure. Heaps. Hashing. Amortized complexity analysis. Randomized algorithms. Introduction to NP-completeness and approximation algorithms. The shortest path methods. Network flow problems.
Tools and techniques for ensuring software reliability. Specification formalisms and languages. Modeling tools and languages. Unit and integration testing. Automated testing and verification tools and algorithms. Mathematical representations for programs and executions. Hoare logic. Specification using modular contracts: Preconditions, postconditions, loop and object invariants. Ownership systems. Automated test generation. Model-based testing. Coverage metrics for testing adequacy. Type and effect systems for reliable software. Software model checkers. Static analysis. Concurrent/multi-threaded programs. Correctness criteria for concurrent programs: race-freedom, atomicity, linearizability and serializability. Testing, verification and debugging tools for concurrent programs.
Presentation of research topics to introduce the students into thesis research.
Multidisciplinary approach to the diagnosis and treatment of cardiovascular and respiratory diseases: Physical examination of the heart, arteries and veins, embryology, anatomy, physiology, pathogenesis, diagnostic methods, medical, interventional and surgical treatment modalities will be evaluated. Topics include: Electrocardiography, rhythm disturbances, atherosclerosis and hyperlipidemia; Ischemic and valvular heart diseases; Cardiac traumas, coagulation, infective endocarditis, myocarditis, pericarditis, cardiac tumors; Traumatic, thromboembolic, cerebrovascular, lower occlusive, vasospastic, aneurysmatic arterial diseases; venous insufficiency; myocardial protection, congenital heart diseases, thoracic aortic diseases will be discussed. Diseases of the respiratory system including pulmonary vascular disorders, pulmonary embolism and hypertension, sleep disorders, neoplasms of the respiratory system, diagnosis and tretament of anaphylaxis will be evaluated.