This course covers introductory concepts in computer programming using C++. There isan emphasis on both the concepts and practice of computer programming. This coursecovers principles of problem solving. Topics include program development process,variables, data types, expressions, selection and repetition structures, functions, textfiles, and arrays.
Introduction to problem-solving methods and program development including: the role of algorithms in the problem-solving process, implementation strategies for algorithms, the concept and properties of algorithms, and basic algorithms. Program design strategies including implementation using a programming language which supports modular design and includes: I/O, events, control structures, arrays, functions.
This lab based course consists of a set of laboratory assignments and projects to engage students in the process of understanding and implementing basic structured programming concepts. Key topics include problem solving, simple data type and structure data types such String and Arrays, basic statements such as assignment, input and output; selection statement, repetition statement, and methods.
This course covers introductory concepts of problem-solving and basic program development using Python. Students will be introduced to the role of algorithms design in the problem-solving process and to the process of writing programs via hands-on experience. Topics include data types, input/output, conditional and iteration control structures, lists, dictionaries, and functions.
Object-oriented design, encapsulation and information hiding, separation of behavior and implementation, classes and subclasses, inheritance (overriding, dynamic dispatch), polymorphism (subtype polymorphism vs. inheritance), class hierarchies, collection classes and iteration, Primitive Data Structures and Application (Array, String, and String Manipulation), Programming Practice using an IDE (modularity, testing, and documentation.
This lab-based course consists of a set of laboratory assignments and projects to engage students in the process of understanding and implementing programming language concepts. It provides hands-on experience with object-oriented programming. Key topics include objects, classes, subclasses, inheritance, polymorphism, and graphical user interface.
Artificial Intelligence (AI) technology is increasingly prevalent in our everyday lives. It has uses in a variety of industries from gaming, to finance, robotics and medical diagnosis. Topics include the basics and applications of AI, machine learning, probabilistic reasoning, robotics, computer vision, natural language processing and how AI impacts society. This course incorporates hands-on exercises and projects.
Operating systems examples; Criteria to select, deploy, integrate and administer platforms or components to support the organization’s IT infrastructure; Fundamentals of hardware and software and how they integrate to form essential components of IT systems; Operating system principles; File systems; Real-time and embedded systems; Fault tolerance; Operating system maintenance, administration and user support.
Human-Computer Interaction (HCI) is the discipline of studying the use of computers by humans and the creation of interactive systems and software that are useful, usable, and enjoyable for the people who use them. The HCI course provides a comprehensive introduction and deep drive into the following topics: principles of user interface design; interface prototyping; user psychology and cognitive science; user interface development; user centered design; styles of interaction; usability testing; human interaction evaluation techniques; web based user interfaces. HCI students have opportunities to work in a medium-size HCI project where they develop a GUI by following a user centered design process.
Techniques for developing, testing and debugging moderate size programs; Arrays, strings and string processing; Linked structures; Exception handling; Knowledge, implementation, and use of files, lists, stacks, queues, trees, heaps and graphs; Strategies for choosing the right data structure; Recursion.
This course introduces the concepts, issues, tasks and techniques of data mining process. Topics include data preparation and feature selection, association rules, classification, clustering, evaluation and validation, and sequence mining, and data mining applications. The course mainly focuses on data mining issues such as data selection and cleaning, machine learning techniques to ``learn" knowledge that is ``hidden" in data, and the reporting and visualization of the resulting knowledge. The course illustrates data mining process by examples of practical applications from the life sciences, computer science, and commerce. Several machine learning topics including classification, prediction, and clustering will be covered.
The objective of this course is to give a thorough introduction to the concepts for organizing, querying and managing databases. This course introduces the concepts relating to information systems in organizational usage, focusing on the analysis and modelling of data. It covers the fundamentals of databases, the process of database design, including data modelling, and in particular the Entity Relationship. Students will gain a sound practical understanding of the SQL relational query language. They will also develop deep technical knowledge in a relational DBMS and a sense of professionalism and team work discipline.
Introduction to system modeling and decision-making using computer simulation; Discrete-event simulation and popular modeling paradigms; Continuous and hybrid simulations: Input modeling, Output analysis and random numbers; Application areas and tools for simulation.
This course introduces the fundamental concepts of machine learning. Topics include extracting and identifying useful features that best represent the data. Pre-processing methods such as replacing missing entries, feature selection, discretization and popular supervised and unsupervised learning algorithms such as linear regression, decision trees, k-nearest neighbor, Bayesian learning, support vector machines, neural networks and k-means are also covered in the course. Topics related to evaluating what is learned include evaluation strategies, cross-validation, Leave-one-out, Bootstrap prediction probabilities. Applications covered in the course include text and web mining, document classification, bioinformatics. The course is accompanied by hands-on problem solving using some of the popular machine learning toolboxes and programming languages.
This course covers fundamental techniques in computer graphics and mathematical foundations. Topics include graphic tools, geometric transformations, basic and advanced rendering techniques, computer animation in film, gaming and simulation.
Overview of molecular biology as related to bioinformatics. Bioinformatics and the relationship between computer science and biology in the field of bioinformatics. Algorithms in general and specifically those often used in bioinformatics. Computing tools used in bioinformatics. Databases available for bioinformatics work. Scientific method and how bioinformatics applications apply. Models of successful collaborations between biologists and computer scientists. Computational models of biological processes and their role in scientific discovery.
Computer Vision is a key element in many products such as cameras, medical image processing and diagnosis, and home and industrial robotics. This course covers the fundamentals of computer vision, simple pattern recognition techniques for face recognition and optical character recognition (OpenCV), image labeling techniques, and simultaneous localization and mapping navigation systems (SLAM) for navigation of autonomous vehicles.
The Internet is increasingly used as a large interconnection network for deploying distributed applications to solve challenging problems in diverse areas. This course covers the basic principles and practices of Web application development (client-side and server-side programming) and distributed computing over the Internet. It focuses on the Internet as a domain for sharing resources using distributed computing with client/server programming, Web services and Service-Oriented Computing. In this course students will learn the basic foundations of Internet computing and use Web technologies (HTML, HTTP, XML, Java Servlets Java Server Pages, and Web services) to develop Internet-based applications.
This course provides students with a working knowledge of methods for design and analysis of robotic and intelligent systems. Particular attention is given to modeling dynamic autonomous robot systems, measuring and controlling their behavior, and making decisions about future actions. The objective of this course is to provide the basic concepts and algorithms required to develop intelligent robots that act in complex environments. The intent is to motivate and prepare students to conduct research projects in the field of robotics and intelligent systems.
This course introduces students to the basics of contemporary mobile application development. The main requirement of the course is to build a functioning application on smart-phones and tablets. Students explore mobile architecture and environment setup. They learn different components, views, and controls that comprise UI, UI layout, constraints, and event handlers. The course covers advanced topics that include data access, data binding, and SQLight. Students must design and develop a working mobile application.
This course will cover advanced topics in computer graphics. The emphasis will be on scientific visualization, animation, procedural modeling, and procedural texturing by using industry standard tools and methodologies.
This course provides students advanced knowledge on computational intelligence methods related to various aspects of data analysis. Rather than treating computational intelligence and data analysis separately, the course allows students to examine the integration of these two disciplines. The emphasis is on how to apply computational intelligence methods to various data analysis aspects.
Special topics in Computer Science is a unique course. The topics are selected from recent developments and trends in Computer Science. The course may introduce new or emerging aspects in the field, contemporary applications and theory in computer science, or assesses the state-of-the-art through readings, discussions, and critiquing current literature.
The course starts by reviewing asymptotic notations and growth of Functions (, O, notations), recursion and recurrences. Study of various algorithm design paradigms (divide & conquer, greedy, and dynamic programming); Advanced data structures (B-Trees; Binomial Heaps; Fibonacci Heaps; Data Structures for Disjoint Sets). Complexity Analysis (Polynomial Time; Polynomial Time Verification; NP-Completeness and Reducibility; NP-Completeness Proofs; NP-Complete Problems); Study of some advanced algorithms (selected from the following: Sorting Networks; Algorithms for Parallel Computers; Matrix Operations; Polynomials and FFT; Number-Theoretic Algorithms; String Matching; Computational Geometry; Approximation Algorithms).
Data mining (DM) tools and techniques can be used to predict future trends and behaviors, allowing individuals and organizations to make proactive and data-driven decisions. Topics include data exploration and preprocessing, data quality verification, data warehouses, data analytics and machine learning techniques for model and knowledge creation, Statistical learning theories, classification, association and clustering, ensemble learning, model building and evaluation, interpretation of patterns in large collections of data, data visualization, and important research issues relevant to advanced mining applications.
The course starts by discussing the need for distributed and parallel computing. Covers the design and implementation of parallel and distributed systems. Topics include Cluster Computing, Grid Computing, Cloud Computing, supercomputing, Many-core Computing, Graphics Processing Unit (GPU) architecture and parallel computing. Parallel algorithm design and implementation issues for such systems. We will cover topics such as synchronous and asynchronous communication, and multithreading implementation, and discuss the challenges therein and corresponding solutions. In addition, we will also study parallel models of computation such as dataflow, and demand-driven computation; message passing and Message Passing Interface (MPI) programming; embarrassingly parallel problems; decomposition and load balancing; shared memory and Open Multi-Processing (OpenMP) programming.
This course covers advanced concepts in software engineering. It starts by eliciting the core concepts and principles underlying the methodologies and techniques required to develop sound software systems. Topics include fundamental software engineering principles and theory, software life cycles, requirement engineering, system specification, system modeling, system architecture, system implementation, system testing, software maintenance, as well as project management. Study of the importance of problem specification, programming style, periodic reviews, documentation, thorough testing, and ease of maintenance.
The course covers the basics of software engineering. It introduces the phases of Software Development Life Cycle (SLC), namely, requirements gathering and analysis, design approaches and modeling, and testing. The course discusses also the main software development models and focuses on the object-oriented paradigm, its concepts, its characteristics, and its design principles. The course concludes with a brief introduction to the wide area of Computer Aided Software Engineering (CASE).
Main topics include the study of methods, tools, notations, and validation techniques for the analysis and specification of software requirements.
Asymptotic analysis of upper and average complexity bounds; Identifying differences among best, average, and worst case behaviors; Big oh, little oh, omega, and theta notation; Standard complexity classes; Empirical measurements of performance; Time and space trade-offs in algorithms; Using recurrence relations to analyze recursive algorithms; Algorithmic strategies including brute-force, greedy, divide-and-conquer, backtracking, branch-and-bound, and pattern matching; Introduction to P and NP.
Theoretical and practical issues in the development of video games; fundamental elements of game development; game history and genres; game analysis; game architecture; game engine evaluation; game worlds and their dimensions; character archetypes; character behavior and animation; intelligent behavior; logical and physical game laws; societal and cultural issues.
This course introduces students to the fundamentals and basics of contemporary mobile application development. In particular, the course focuses on mobile architecture, mobile UI design, and environment setup. Students learn different UI aspects such as controls, layouts, constraints, and event handlers. The course covers advanced topics that include sensor data, multimedia, Cloud databases, and Google Maps. The course is project oriented in which students must finish and demonstrate a mid-size working mobile application. Code design, data capturing, and architecture are emphasized.
The course focuses on Agile process, quality issues and software engineering lifecycle, theoretical basis, such as Abstract Data Types, advanced object-oriented mechanisms, techniques and principles for producing reusable components, reuse issues, multithreading design, inter-process communication, architectural patterns, service-oriented architecture. The course offers the students the opportunity to develop a project following the software engineering lifecycle, including debugging, testing, demonstration and presentation.
This course provides the knowledge and skills necessary to translate user needs and priorities into system requirements, which form the starting point for engineering software systems. Techniques for translating user needs and priorities into specific functional and performance requirements are presented. Topics include Goal Oriented RE, scenario oriented RE, elicitation techniques, Validation and Verification, and specifying requirements using informal/semi-formal/formal techniques. To acquire practical and research experience, students participate in groups to develop software requirements specifications (SRS) and summarize/present research papers. Case studies and tools will be introduced.
This course emphasizes the importance of software testing. It introduces the main concepts and techniques of testing in order to assure software system quality. In particular, the course covers software testing at the unit and module levels. New ways of testing are introduced by this course. They consist in modeling the software into logical structure, syntactic structure, graphic structure, or input space characterization, and then covering the model elements. Based on the new style of testing different techniques are presented in order to manually and automatically generate high quality test data. In addition, the course covers emergent trends of software testing such as, testing web sites, web services, mobile applications, and testing for safety and security. This course covers also topics on software quality and quality assurance.
The course explores the concepts of human computer interaction and focuses on HCI usability. It covers theory, models and principles of human-computer interaction design, development methods for interfaces. The course defends the User Centered Design philosophy and covers several techniques to implement it such as prototyping, UX learning, Agile UX and usability testing. To acquire practical and research experience, students participate in groups to study, design and implement HCI as part of a term project and write research papers.
Software Engineering is a highly evolving field and new approaches and methods are developed continuously. This special topic course focuses on a major research trend in Software Engineering and assesses the state-of-the-art through readings, discussions, critiquing current literature, and elaborating a technical paper addressing the challenges in software engineering. Research strategies, effective presentations, and technical writing are emphasized throughout the course.
This course covers fundamental principles and techniques for embedded software engineering. Continuous, discrete, and concurrent behavior modeling methods are introduced with a focus on the component-based development approach for designing, implementing, and analyzing embedded software. Formal models for reachability analysis and model checking, as well as approaches to quantitative analysis, are covered. To acquire practical and research experience, students participate in groups to develop implementation projects and write research papers.
لايوجد محتوى عربي لهذه الصفحة
يوجد مشكلة في الصفحة التي تحاول الوصول إليها