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.
CSBP 331 Artificial Intelligence Robotics Lab is about applying the AI, and related subject-matter knowledge in a practical way by means of a robotics embodiment. We use 45544 LEGO MINDSTORMS Education EV3, Arduino UNE / MEGA and Nao Robot. This is a hands on course where students are expected to assemble and operate robots
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.
The focus of the Introduction to Engineering Design course is to expose students to design process including: research and analysis, teamwork, communication methods, impact of engineering solutions on society, engineering standards, and technical documentation, with emphasis on topics specific to computer science and software engineering. The course offers the students the opportunity to develop skills and understanding concepts through activity, projects and problem-based learning.
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.
This is a lab course to learn to use tools to create Computer Graphics. Computer Graphics Lab is about applying Computer Graphics and related subject-matter knowledge in a practical way by means of a practical hands-on lab projects. You will use the industry standard Unreal engine to gain knowledge on how to apply computer graphics methods and techniques to produce games, special effects and simulations.
Intelligent systems are increasingly becoming relevant to daily life. There is a demand in the market to develop intelligent systems that are autonomous, flexible and intelligent. This project-based course introduces techniques for developing intelligent systems to solve practical problems. Students will work on a project to develop intelligent systems.
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.
This lab focuses on defining and implementing computer science projects. At the end of the lab the students will design, develop and test a software application that implements aspects of computer science approaches.
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).
Complexity; nature and structure of complex systems; impact and pervasiveness of complex systems; methods and technologies for developing highly reliable complex systems; relationship between complex software systems and societalscale systems; conceptual framework; software modeling of societal-scale systems; reference designs and architectures.
This course is intended to prepare the students to address intelligent systems issues in computational biology, computer graphics, computer vision, human language technology, machine learning, intelligent agents, medical informatics, robotics, and the semantic web. Advanced topics include machine learning, knowledge representation, search, constraint satisfaction, graphical models, and logic.
Semantic web, reactive and deductive agents, reasoning on the web, agent communication techniques, ontologies, social web systems, semantic web-based services.
This course covers advanced data mining techniques for Big Data, especially, data stream mining, and cloud data mining. This course will enable learners to apply the big data mining techniques to discover useful relationships and patterns from massive data and utilize them in strategic and competitive decision making in an enterprise setting. Topics will cover efficient, scalable and effective construction of predictive and analytical data mining models from data streams and data cloud; comprehensive and in-depth knowledge of Cloud Computing concepts, technological foundations, architecture, applications and services.
This course introduces the fundamentals of statistical pattern recognition with examples from several application areas. Techniques for analyzing multidimensional data of various types and scales along with algorithms for projection, dimensionality reduction, clustering and classification of data are explained. The course presents competing approaches to exploratory data analysis and classifier design, allowing students to make judicious choices when confronted with real pattern recognition problems. Students use MATLAB software and implement some algorithms using their choice of a programming language. Topics include: Bayes decision theory, parametric approaches, the Ugly Duckling theorem, discriminant functions, performance assessment, nonparametric classification, feature extraction, unsupervised learning, support vector machines and kernels, and Boosting basics.
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 content of this course is customized on every offering depending on current trends and interests.
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.
The course covers approaches, concepts, and notations for the design of small-to-medium sized software systems. Design approaches include function oriented (Data Flow Oriented) and object oriented (e.g., Unified Modeling Language, UML). It focuses on fundamental design concepts, such as abstraction, refinement, modularity, information hiding, and reusability. The course introduces also design principles that promote design quality such as degree of coupling and cohesion. The coverage of design notations focuses on graphical representations, such as Data Flow Diagrams (DFD) and UML diagrams. Structural and behavioral design are elaborated in the context of object-oriented analysis and modeling. Other topics that are covered include software architecture design and design patterns.
This course covers formal software specifications using the Z approach and the Z notation. The role and importance of formal specifications are described. A brief review of logic, set theory, and relations is used to emphasize the formal foundations of Z. The Z notation is thoroughly covered in gradual stages. At each stage, examples are used to illustrate the power and formality of the Z approach. The various Z approach concepts include the specification process, specification structure, types, relations, functions, schemas, and other advanced operators. The Z syntax checker is used to check specification examples developed in class. A simple example of data refinement is elaborated to highlight the transformation from specifications to code. Other specification methods are briefly described to show the diversity of specification models.
The complexity of modern software systems requires the use of modern techniques for their specification and realization as well. The course provides hands-on practices in system analysis and design perspectives. The Lab starts with the process of capturing, defining, analyzing and documenting software requirements. Then the lab introduces the role of design in the Software Life Cycle and hence the process of developing the static structure and the dynamic behavior of the intended software system. The course will attempt to discuss rapidly changing software tools within the context of their category and their availability as commercial products. The objective is that the topics covered should remain meaningful, even after the current generation of tools is obsolete.
The course covers the methods and techniques for constructing large-scale software systems from preexisting components. Students learn how to build, specify, locate, and integrate components. The course focuses on topics that include component models, component architectures such as Service Oriented Architecture, distributed computing (Remoting/RMI), and other emerging relevant topics. Students must finish a term project in which multiple components are integrated and deployed.
This course introduces the concepts and techniques of testing and assuring the quality of software. It provides to learn practical ways to design high quality tests during all phases of software development. Students learn the theory behind black-box testing and white-box testing and to apply that theory in practice. The course introduces software reliability and the main characteristics of software quality. Topics include testing process, test design, equivalence partitioning testing, boundary value analysis, control flow graph, statement coverage, branch coverage, path coverage, condition coverage, regression testing, software testing and reliability, software quality assessment and assurance.
The course focuses on the software implementation phase. It uses various strategies for constructing and implementing software systems. The course provides hands-on experience for reusing software components. The course concepts are reinforced in weekly laboratory exercises. A term project serves as a capstone of the course.
Description: Software testing lab underlines fundamental concepts of software testing and develops an expertise of how-to-do for future software testers. The lab focuses on delivering testing Plan, test cases and test suites. Most of the lab sessions will be dedicated to apply techniques and tools to test software units. The lab exercises will use test beds from different programming language. In particular, test beds will include student-implemented code. This will provide immediate feedback to the students and help him/her to avoid program errors
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.
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, and critiquing current literature. Summarizing, surveying, and presenting this state-of-the-art allow the students to understand research approaches, themes, and directions.
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.
The course focuses on technologies and industry standards for accessing and manipulating information and services via Web applications. This course aims at building core competencies in web design and development. It includes introductions to XHTML, eXtensible Markup Language (XML), Cascading Style Sheets (CSS), Asynchronous JavaScript And Xml (AJAX) with XML and JavaScript Object Notation (JSON) as primary means to transfer data from client, and server and server-side languages, such as ASP.NET or Java 2 platform (JEE). Course topics also include: HTTP Protocol, Application server vs. Web server, Model View Controller (MVC) architecture and Java beans.
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.
Complexity; nature and structure of complex systems; impact and pervasiveness of complex systems; methods and technologies for developing highly reliable complex systems; relationship between complex software systems and societalscale systems; conceptual framework; software modeling of societal-scale systems; reference designs and architectures.
This course covers advanced theoretical concepts in software engineering and provides an extensive hands-on experience in dealing with various issues of software development. It involves a semester-long group software development project spanning software project planning and management, analysis of requirements, construction of software architecture and design, implementation, and quality assessment. The course will introduce formal specification, component-based software engineering, and software maintenance and evolution.
This course covers advanced concepts and methodologies for the development, evolution, and reuse of software architecture and design, with an emphasis on object-orientation. Identification, analysis, and synthesis of system data, process, communication, and control components. Decomposition, assignment, and composition of functionality to design elements and connectors. Use of non-functional requirements for analyzing trade-offs and selecting among design alternatives. Transition from requirements to software architecture, design, and to implementation.
This course covers the principles and techniques of software maintenance. Impact of software development process on software justifiability, maintainability, evolvability, and planning of release cycles. Use of very high-level languages and dependencies for forward engineering and reverse engineering. Achievements, pitfalls, and trends in software reuse, reverse engineering, and re-engineering.
The content of this course is customized on every offering depending on current trends and interests.
لايوجد محتوى عربي لهذه الصفحة
يوجد مشكلة في الصفحة التي تحاول الوصول إليها