AIU Computer Science Track
The AIU Bootcamp on a Computer Science track, allows the student to focus on the area in Computer Science in which the student is interested in, i.e., programming, Operating Systems, or Database concepts. The high-engagement learning experience with practical projects and assignments will help develop a deeper understanding in the focused area. For programming, the courses in Java, JavaScript, or Python will provide a strong skill set in programming or enhance existing programming skill.
Programming in JavaScript
This course introduces JavaScript programming language fundamentals as well as advanced language features such as events and callbacks. This course also introduces modern web development using JavaScript, HTML, and CSS. Students will learn how browsers represent a web page data using the Document Object Model (DOM) and how to develop dynamic, interactive web pages using JavaScript. Finally, this course includes introduction to server-side JavaScript development with web frameworks such as Node.js.
Programming in Java
Java is currently one of the most popular programming languages in use, and is widely used from application software to web applications. It was originally developed by James Gosling to be a simple, object-oriented, robust, secure, architecture neutral, portable, concurrent, and dynamic language. This course first introduces basic programming constructs such as loops, methods, and arrays followed by object-oriented programming concepts and the rich GUI API of Java. Topics include: elementary programming, selections, loops, methods, arrays, objects and classes, strings and text I/O, inheritance and polymorphism, abstract classes and interfaces, object-oriented design and patterns, GUI basics, graphics, event-driven programming, exception handling.
Python
Features of the Python programming language with emphasis on programming practice. Programming lab and projects include a graphical user interface, data analysis and visualization, web data extraction, and web applications.
Object-Oriented Programming and Data Structures
Based on the Java programming language, this course first introduces fundamental programming techniques with selections, loops, methods, and arrays. The second part of the course focuses on object-oriented programming concepts such as classes, inheritance, polymorphism, abstract classes, and interfaces. The course concludes with an overview of the Java Collection Framework, which defines a set of useful API for data structures. Topics include: elementary programming, selections, loops, methods, arrays, objects and classes, strings and text I/O, inheritance and polymorphism, abstract classes and interfaces, generics, Java Collection Framework.
Introduction to UNIX/Linux
This course is a practical introduction to UNIX and Linux operating systems. Topics include: user accounts, the visual editor, file system and access control, process management, system calls, system utilities, UNIX handling of files and processes, basic shell utilities and shell scripting.
Computer Science Infrastructure
Computer Science is the study of the theoretical foundations of information and computation. This is an introductory course for students to review or build a foundation in Computer Science. Topics include: history of computing, the basics of hardware and software, operating systems, computer networks, Internet technologies, programming, and software applications.
Computer Networks I
This course is intended to give you an overview of the computer network architecture, discussion includes the key principles of computer networking. It focuses on the underlying concepts and technologies that make the Internet work.
Topics covered include network design and architecture; the ways users can connect to a network; the concepts of switching, routing, and internetworking; end-to-end protocols; congestion control and resource allocation; end-to-end data; network security; and network applications such as e-mail and the Web, IP telephony and video streaming, and peer-to-peer file sharing.
Operating Systems
An operating system (OS) is a set of system software programs in a computer that regulate the ways application software programs use the computer hardware and the ways that users control the computer. This class introduces the basic facilities provided in modern operating systems. Topics include: principles of operating system design and implementation; concurrent processes; inter-process communication; job and process scheduling; deadlock handling; issues in memory management (virtual memory, segmentation, paging); and auxiliary storage management (files systems, directory structuring, protection mechanisms); performance issues; and case studies.
Computer Architecture I
The goal of this course is to provide the students with a working knowledge of how computers operate and the general principles that affect their performance. The topics of this course include an in-depth presentation on major functional units of small to medium-scale digital computers, on machine instruction set characteristics, pipelining and caching, design of arithmetic and logic data path, and the detailed control units. The key aspects of CPU performance, RISC processor design and instruction-level implication will be also addressed.
Database System Principles
Students will learn relational database design both at the physical and at the logical levels. An overview of relational algebra and will cover the SQL programming language. Special topics to be covered include constraints and triggers, views and indexes. In addition, we cover SQL in the server environment including embedded SQL, stored procedure, CLI, and JDBC. We close by covering an overview for query processing and high-level overview of SQL compiler design.
Computer Networks II
For students with CS440 or equivalent background, this course provides detailed coverage of advanced topics in computer networks. Topics include: layer 2 switching and spanning tree protocol, VLAN, TCP/IP, VLSM and subnet, IP routing protocols (RIP, OSPF, BGP, and ISIS), advanced network IPV6 Addressing scheme and static routing, switch/router testing methodology, enterprise network design. The course learning will be aided by regular GNS3 Lab sessions.
Software Engineering
The need to produce efficient, reliable and maintainable software requires the use of engineering principles in specification, creation, verification, validation and management. This course introduces the student to the principles of software engineering as they apply to each stage in the development of a software product. Topics include: software process, requirement engineering, analysis methods, architectural design, component-level design, user interface design, design patterns, software quality assurance, and overview of project management.
Embedded Software Design
Embedded software is computer software which plays an integral role inside the electronics. Embedded software is usually written for special purpose hardware. This course deals with advanced embedded software programming concepts, interfacing techniques, hardware organization and software development using embedded systems. Topics covered in this course include: embedded device drivers, embedded operating systems, networking, error handling and debugging, hardware and software co-verification, DSP in embedded systems, techniques for embedded processing, development technologies and trends, and practical embedded coding techniques.
Design and Analysis of Algorithms
An algorithm is an effective method for solving a problem expressed as a finite sequence of instructions. This course provides students with balanced introduction on computational models for asymptotic time-space complexity analyses as well as algorithmic design techniques with performance and cost implications. Topics include: growth of functions, recurrences, probabilistic analysis and randomized algorithms, sorting algorithms, binary search trees, red-black trees, dynamic programming, greedy algorithms, B-trees, heaps, graph algorithms, minimum spanning trees, shortest paths, maximum flow, sorting networks.
Recommended for Programming:
- Python
- Java
- JavaScript
- Object Oriented Design and Data Structures
Recommended for Computer Science:
- Introduction to UNIX/Linux
- Operating Systems
- Computer Networks
- Computer Architecture
- Database System Principles
- Software Engineering
- Embedded Software Design
- Algorithms

