Gain a detailed knowledge of the fundamental concepts of ABAP, and learn how to efficiently work with the ABAP Workbench tools, in order to undertake custom developments.
Building on the principles introduced in Algorithms and data structures, this course equips students with additional mathematical tools for algorithm analysis.
Students learn many techniques for efficient algorithm design and must complete several significant programming projects. Topics include basic algorithmic analysis, algorithmic strategies, and fundamental computing algorithms.
Programming language and software tools of the course:
Students have to do lab works and projects using modern C+ compilers that support standard C++ 11 and command-line interface.
Topics:
Robotics technologies are becoming of critical value in the modern world. From medical tools to industry automation, from space exploration to human-assisted living, and much more, there is an ever-increasing demand for robotics engineers. This course provides a general foundation in robotics engineering based on the Arduino platform. Because robotics software development typically depends on mutual hardware development and teamwork, this course is also intended to build fabrication and rapid prototyping skills in students so as to practice communication between software and mechanical engineers, and project managers. Students will work independently and in teams to solve challenges. The first few weeks of the course will establish individual skills with the Arduino and with rapid prototyping techniques and 3D printing. The remainder of the course will involve working on a team, where team members will take turns serving in specific roles on the team to solve robotics challenges and to create small robotics devices.
By the end of this course, students will:
• be able to program an ‘Arduino Uno’ to interface with a variety of sensors and motors to achieve the desired set of robot behaviors.
• be able to design and produce mechanical parts using rapid prototyping techniques and a 3D printer.
• appreciate how software and hardware problems should be solved in tandem.
• have gained experience in collaborating with an engineering team to achieve team goals.
• be familiar with common robotics principles, including PID control, inverse kinematics, and the Kalman filter.
Artificial Intelligence will define the next generation of software solutions. This software engineering course provides an overview of AI and explains how it can be used to build smart apps that help organizations be more efficient and enrich people’s lives. The main research topics in AI include problem-solving, reasoning, planning, natural language understanding, computer vision, automatic programming, machine learning, and so on. Also, methods for problem-solving are useful both for reasoning and planning. Further, both natural language understanding and computer vision can be solved using methods developed in the field of pattern recognition.
The course teaches students the fundamentals of computer graphics through a process of developing a 3-D engine in a series of laboratory tasks throughout the course.
Students will study how to work with graphics accelerators with the help of the OpenGL ES API to deliver rich 3-D computer-generated images, animations, or interactive applications.
As a result, students should be able to research and analyze the functioning of a complex real-time computational system, improve their skills using programming languages for software design and development in accord to the goals of the AUCA Software Engineering Department and the 510300 IT competency standard (including competency elements OK 1–7, 1–7, 1–15).
The CCNA Routing and Switching curriculum consists of four courses that make up the recommended learning path. Students will be prepared to take the Cisco CCENT® certification exam after completing a set of two courses and the CCNA Routing and Switching certification exam after completing a set of four courses. The curriculum also helps students develop workforce readiness skills and builds a foundation for success in networking-related careers and degree programs.
Topics:
This course teaches assembly language programming and 32-bit architecture for Intel and AMD processors. One of the main course's goals is to help students approach programming problems with a machine-level mindset. Special emphasis in the course is made on reflection of high-level constructs of C and C++ programming languages in fundamental low-level features of modern processors.
Students will each develop a significant software application that makes heavy use of OpenCV, today’s leading open-source computer vision library. Concepts relating to machine learning and heterogeneous computer processing will be introduced as students work to build functionality for personalized projects. OpenCV “has more than 2500 optimized algorithms, which includes a comprehensive set of both classic and state-of-the-art computer vision and machine learning algorithms. These algorithms can be used to detect and recognize faces, identify objects, classify human actions in videos, track camera movements, track moving objects, extract 3D models of objects, produce 3D point clouds from stereo cameras, stitch images together to produce a high-resolution image of an entire scene, find similar images from an image database, remove red eyes from images taken using flash, follow eye movements, recognize scenery,” and more. Through a project-oriented approach, students will learn to use OpenCV, and will gain a working understanding of underlying concepts in computer vision.
By the end of this course, students will:
This course is intended for students with little or no programming experience. It strives for providing students with a general understanding of the role computation can play in solving problems, helping students to learn how to write small programs that allow them to reach useful goals. The primary language for this course is Python.
This course covers the following topics:
The primary objective of CP is to challenge students to solve logical and mathematical problems and problems that require advanced algorithms and data structures. The focus is more on solving and writing efficient code for hard problems in a short amount of time. We expect that the best students from this course will represent AUCA at the regional ACM ICPC (International Collegiate Programming Contest) - the most popular programming competition in the world among universities.
The course involves in-class programming practices and training contests.
Students who are used to solving hard problems in contests can easily be able to answer questions asked in technical (coding) interviews.
Competitive programming also increases your problem-solving speed and coding skills which provides an edge to you over other applicants.
All algorithms will be implemented in C++ which has an advantage in the execution speed of programs over other languages such as Java, Python.
Also, C++ is the most preferred language for competitive programming because of its STL (Standard Template Library). STL is a collection
of C++ templates to help programmers quickly tackle basic data structures such as lists, stacks, queues, sets, maps, etc, and also some algorithms such as lower_bound, upper_bound, next_permutation, nth_element, random_shuffle, etc.
Many software applications today involve a speech interface. For instance, a user can talk to Amazon’s Alexa and iPhone’s Siri to retrieve information. Other applications involve translating speech and text between languages. Furthermore, many applications of the future will want to be speech-enabled, such as the human-robot interface, and the Internet of Things (IOT). In the first part of the course, we will learn the fundamentals of today’s speech and language processing technologies. The second half of the course will then focus on term projects. These projects will feature the use of a cloud-based speech recognizer.
The purpose of this course is to provide students with the basic concepts of cryptography and classical encryption systems. In addition, within the scope of this course, knowledge about private key and public-key cryptography systems is introduced. The course will also provide information about recent researches in cryptography for students who are interested in this field of study.
We will start by reviewing relevant math topics, such as vector operations, matrices, some
distribution functions, Bayes theorem, and gradient descent. Then we will review Python syntax and Python modules for data manipulation and plotting. The main goal of the course is to introduce students to basics of the machine learning and predictive modeling. We will cover various regression techniques, and a number of machine learning algorithms (Naive Bayes, Decision Trees).
By the end of the course, the students would have the knowledge and practical skills of database design and implementation. Topics include advanced information on models and systems, data modeling and database systems, normalization, performance optimization, data warehousing, OLAP. In case of lab works, learners will get familiar with Microsoft SQL Server and its tools.
The learners will understand practically the full database lifecycle from the collecting requirements to performance optimization and administering. Course includes a number of Microsoft IT academy short courses.
Additionally, learners will be prepared to pass Microsoft certification exam 70-461: Querying Microsoft SQL Server 2012/2014.
This course provides a basic introduction to big data and corresponding quantitative research methods. The objective of the course is to familiarize students with big data analysis as a tool for addressing substantive research questions. The course begins with a basic introduction to big data and discusses what the analysis of these data entails, as well as associated technical, conceptual, and ethical challenges. The strength and limitations of big data research are discussed in depth using real-world examples. Students then engage in case study exercises in which small groups of students develop and present a big data concept for a specific real-world case. This includes practical exercises to familiarize students with the format of big data. It also provides a first hands-on experience in handling and analyzing large, complex data structures. The block course is designed as a primer for anyone interested in attaining a basic understanding of what big data analysis entails.
This course gives information about working principles and design techniques of modern digital electronic circuits (from simplest controlling circuits to modern microprocessors). Theory of semiconductor physics is used to explain working principles of modern digital electronic circuits while mathematical logic (Boolean algebra) and theory of computation (finite-state machines) are used to substantiate their design.
The course concentrates on teaching students to use hardware definition languages (HDL) to design digital electronic circuits according to such substantiations and strengthening these skills by practical exercises. The course also describes the capabilities (architecture) and internal design (microarchitecture) of modern microprocessors and gives practical examples as exercises in assembly language programming and simple microprocessor design.
The course introduces students to the topic of game development. It covers the theory and practice of video game production. It delves into of fields of computer graphics, computational physics, artificial intelligence, and game-play design. During the course, students will get an opportunity to build two market-ready games for desktop, web, or mobile platforms. They will not only learn how to create their own lightweight graphics, physics, and game-play engines but also how to use third-party solutions such as Unity or Unreal Engine.
Topics Covered
This course introduces students to the fundamentals of modern website design and development using the latest standards-based languages and techniques. Specifically, the course will focus on the combination of HyperText Markup Language (HTML5) and Cascading Style Sheets (CSS3) to create websites that are scalable, efficient, and compatible. Topics covered include HTML5 and CSS3 syntax, structuring and styling text, links, images, layout, lists, tables, forms, and multiple media output.
Cybersecurity is about developing systems that remain dependable in the face of malice, error, and mischance. As a discipline, cybersecurity focuses on tools, processes, and methods needed to design, implement, and test systems and to adapt existing systems to survive in a hostile environment. Introduction to Cybersecurity Engineering will cover topics ranging from cryptography and computer security through hardware and physical security to a knowledge of audit methods, security management, and public law. The course will introduce security engineering skills such as business process analysis, software security, evaluation, and testing.
This course will provide an overview and understanding of established cyber security strategy as well as provide students with the opportunity to engage in strategic decision-making in the context of cyber security. The course will assess current threats in varying contexts (local organizations such as banks) including conducting a threat or vulnerability assessment for a non-profit or government service organization, as well as evaluate the current methodology and approaches to pave the way for the development and implementation of cyber security strategy at the organization or corporate level. This course will prepare students to research a documented penetration testing methodology that is repeatable and that can be used in a penetration testing engagement, globally.
This course teaches students to master tools and techniques to develop web applications. Students will study basic networking concepts focusing on The Hypertext Transfer Protocol (HTTP), the foundation of data communication for the World Wide Web. Students will learn the Hypertext Markup Language (HTML) and Cascading Style Sheets (CSS) to describe and style the content of their web documents.
The course introduces students to the JavaScript programming language for both front-end and back-end development with a brief introduction to other popular languages, environments, and frameworks. Last but not least, students will take a look at how to configure a web server, work with relational and non-relational databases, scale their sites, and use cloud services.
This course is an introduction to and survey of techniques of automated deduction. Topics will include propositional, first-order, and second-order logic; satisfiability, term unification; logical resolution; and Horn clause programming. Optional topics include term rewriting systems; lambda calculus and type theory; and general automated theorem proving.
iOS Application Development is a practice-oriented course for students with knowledge of Object-Oriented Programming.
In this course, you will learn practices of developing applications for iOS devices. During the course, you will learn Swift programming language with a certain look-back on Objective-C for compatibility reasons. The program will go through the most common and most important patterns, components and frameworks used in an iOS application with a focus on practice and application of your knowledge. This course will teach you to use Object-Oriented Design, MVC (Model View Controller) pattern, and build basic and more advanced applications.
The expected end result is improved skill of Object-Oriented Design, usage of best-practice programming patterns, and ability to design and build an iOS application.
One of the main tasks of up-to-date informatics is developing interactive computer presentations of all familiar real and virtual objects to offer the user the opportunity to master them safely and effectively before real treating.
If such computer presentation does not depend on the user’s knowledge and skills on similar objects then it is said to be independent. Such computer presentations are more effective because the user becomes proficient in the object, immediately, without references to other objects in mind.
Based on existing and successfully used sketches, the main stages of developing such software will be considered: creating of mathematical models; randomization; creating of scenes; testing. The purpose of this course is developing independent presentations and complex examinations on languages and other objects to be dispensed freely for advertising AUCA.
This course introduces students to development tools and APIs to build applications for the Google Android operating system to manage networks of physical devices, vehicles, home appliances, and other items embedded with electronics, sensors, and actuators. Students will get introduced to embedded development on the Arduino platform with the help of ESP8266, ESP32, and several other WiFi, Bluetooth, and LoRa-enabled chips with programmable microcontrollers. Students will also learn how to build unique interactive user interfaces for multi-touch mobile devices on the Android platform to manage embedded devices around us. The mobile development part covers object-oriented design using the Model-View-Controller
paradigm, the Java programming language for the Android Runtime, development frameworks, device emulators, and application build tools. Other topics include multi-threading, power and performance considerations, the accelerated 2-D and 3-D graphics APIs. By bringing two platforms together, students will prototype appliances that can be controlled through mobile phones to help people with their daily life. The course projects range from building a simple smart light bulb to an automatic data collection system with a toy car robot for an indoor positioning system.
The course is designed for all interested in obtaining ICT multidisciplinary skills. That applies to both undergraduates and graduate/postgraduate level. The course could also be promoted to the ICT industry staff/managers already on the job willing to gain multidisciplinary skills.
Some of the skills students will achieve after successfully completing the course, as follows:
The job roles the (post)graduates can apply for range from less to more senior positions within any organization/company having an IT department or section. Some examples follow:
Why should I learn to build and use artificial neural networks? A short answer is that neural network engineers are highly sought after on the job market today. This is because deep learning with neural networks is the leading way to address worldly perception types of challenges in artificial intelligence and machine learning. Neural networks are very useful in object recognition, categorization, noise reduction, anomaly detection, and pattern completion and prediction. This course provides an in-depth introduction to artificial neural networks.
We will start with the ‘perceptron,’ the smallest unit of a neural network, and work our way up to large, multi-layered ‘deep learning’ networks. The major technique for training deep neural networks will be covered extensively, along
with some methods and tricks for improving learning. A number of other types of artificial neural networks that involve dynamic processing will also be covered.
The course will focus on a base material of two classical sections of numerical mathematics: numerical methods of Algebra, Analysis, and methods for Solving Ordinary Differential Equations. Students will familiarize themselves with the following topics: characteristics of computer arithmetic, polynomial and spline interpolation, direct and iterative methods for solving linear and nonlinear systems of equations, numerical integration, numerical methods for solving ordinary differential equations.
This course is intended to familiarize students with the paradigm of modern high-level programming languages that can be used in a convenient way for various purposes – from solving and automating daily routine tasks of text processing to developing complex informational systems with databases and different user interfaces.
The course demonstrates these abilities using Python as an example of such a high-level programming language. The course covers all basic and some advanced knowledge of this language – paradigm (objects, references, names, and name scopes), the syntax of operators and statements, subroutine calls and definitions, usage and definition of modules, classes, and exceptions, built-in features for file input-output.
This course is an introduction to R, a powerful and flexible statistical language and environment that also provides more flexible graphics capabilities than other popular statistical packages. The course will introduce students to the basics of using R for statistical programming, computation, graphics, and modeling. We will start with a basic introduction to the R language, reading and writing data, and graphics. We then discuss writing functions in R and tips on programming in R.
Finally, the latter part of the course will focus on using R to fit some important types of statistical models, including linear regression. Our goal is to get students up and running with R such that they can use R in their research and are in a good position to expand their knowledge of R on their own.
Market research and global employers have consistently indicated that the skills gap for general networking skills is shrinking, while the skills gap for essential networking technologies such as security, voice, and wireless, and for emerging technologies, such as data center, cloud, and video, is growing. As a global leader in technology and networking, Cisco developed the new CCENT and CCNA Routing and Switching certifications and curriculum to remain aligned with the rapidly changing global job market and trends. As a result of the changes to the certification exams, students can choose to pursue Cisco advanced technology certifications after achieving the prerequisite CCENT certification. The recommended CCNA Routing and Switching course flow support student flexibility by helping students prepare for the CCENT certification exam after the first two courses and helps them prepare for the CCNA certification exam after completing all four courses.
There are four courses that make up the recommended CCNA Routing and Switching course sequence: Introduction to Networks, Routing and Switching Essentials, Scaling Networks, and Connecting Networks.
This course introduces the foundational concepts of computation: what is computation? What is a computer? What are the limits of what a computer can do? What resources (of time and memory) will it need? The course covers three models of computation (finite automata, pushdown automata, and Turing machines), and the corresponding formal language classes (regular, context-free, recursive, and recursively enumerable languages). Then attention shifts to computational complexity: the time-complexity classes P and NP, and polynomial-time reducibility.
This course will introduce the basic tools of the theory of probabilities and mathematical statistics with applications to social sciences and business. The course consists of the following topics: counting techniques; basic probability concepts and theorems; discrete and continuous probability distributions; statistical inference and sampling, the central limit theorem, confidence intervals for the mean of a normal population, hypothesis testing for the mean of a normal population.
This course introduces students to the fundamentals of modern website design and development using the latest standards-based languages and techniques. Specifically, the course will focus on the combination of HyperText Markup Language (HTML5) and Cascading Style Sheets (CSS3) to create websites that are scalable, efficient, and compatible. Topics covered include HTML5 and CSS3 syntax, structuring and styling text, links, images, layout, lists, tables, forms, and multiple media output.
Software Project Management course covers all the aspects of a software project management process for any kind of software project. It will teach you Agile software management practices and projects, traditional projects, to lead a team of developers and interact with clients. Students will start from the very basic: what is software project management, project management skills, the role, and responsibility of a software project manager. And will go deep into specialization: Agile frameworks and project management, software development steps, risk management, project management applications, project conclusion and how to close the project, documentation management.
The course gives to students an initial knowledge about system thinking and systems engineering. Students will get knowledge about definitions and concepts of a system, structure, and behavior of the system, system traps, and system dynamics. To participate in various projects, students teach the life cycle of the system and different types of systems, the role of stakeholders, their needs and the development of system requirements, the system architecture, and modern approaches to the design process of creating systems, project management scheme based on system thinking, configuration management, verification and validation of the system. Systems engineering designate to develop large technical projects and thus is a partner of Software Engineering