Logo Academics


Career Services
News & Events
Campus Life
Friends & Donors

Core | Computer Science | Business Administration | Africana Studies | Grading System

  Computer Science

Programming II

Discrete Structures & Theory

Programming III

Data Structures & Algorithms

Computer Organization & Architecture

Software Engineering

Operating Systems

Database Management

Human Computer Interaction

Web Technologies

Application Course

Networks & Distributed Computing

Advanced Topics in Computer Science

Programming II:
Introduction to Computer Programming

This course gives students an intensive introduction to programming, as well as experience working with (but not designing) larger systems. Concepts will be illustrated using the Java language. In addition to elaborating on all the concepts from Programming I, this course will introduce the object concept; using and declaring functions (methods); data types and variables including arrays; and the use of standard packages. Some techniques for searching and sorting arrays will be introduced. Basic software engineering concepts will also be introduced, such as the software life-cycle; characteristics of good software; documentation, testing; and coding practices which promote correctness and robustness. The course will include at least one team project. At the end of the course, students will be fluent in the basic concepts of modern programming using an object oriented paradigm, and should have the ability to carry out a simple program development process.

Discrete Structures and Theory
This course will introduce students to discrete mathematical objects useful for computer science and engineering. Topics covered include fundamentals of set theory, graph theory, enumeration, and algebraic structures, with applications in computing. The goal of this course is to provide students with the definitions and basic tools for reasoning about discrete mathematical objects useful for computer science and engineering.

Programming III: Intermediate Computer Programming
This course is a continuation of Programming II. It will introduce students to more details of object definition and construction and event-driven programming. It will also introduce additional standard Java packages, including the file system and graphical user interface elements. Basic data structures will be introduced and implemented, including lists, stacks, queues, and simple kinds of trees (through binary search trees). This course will also give students an introduction to C++ and to programming techniques for dynamic data structures. Students will study algorithms for ordering, searching, traversing and manipulating these data structures, including some recursive algorithms. Good software engineering practices will be featured in various aspects of the course, and notations similar to the Unified Modeling Language (UML) will be employed. Through one or more team projects, students will gain experience in designing and implementing larger systems. However, the emphasis of the course will be on the use of prewritten packages and built-in language facilities, as well as design and implementation of moderately sized custom classes and algorithms, rather than on the design of whole systems.
The main goal of this course is to give students the ability to design and implement medium-sized programs consisting of several modules.

Data Structures and Algorithms
This course will cover fundamental abstract data types and their implementations as data structures, such as lists and trees, as well as asymptotic analyses of algorithms involving these data structures. Students will also learn about searching (dictionaries, priority queues, and hashing); sorting (internal and external); graphs and algorithms on graphs (shortest path, minimum spanning trees); and pattern matching. The main goal of this course is to introduce students to the basic data structures needed to efficiently implement common programming problems. Students will also learn to analyze the run-time of the algorithms that manipulate these data structures.

Computer Organization and Architecture
This course presents the fundamental concepts of computer organization and instruction set architectures. Assembly language programming is used to present and illustrate the concepts of instruction set design. The basics of Central Processor Unit (CPU) implementation are covered, including pipelining and memory hierarchy. The interface to the Compiler and Operating System is described in terms of the interaction between the hardware and software components of a system. The goal of this course is to give students a basic understanding of the architecture and organization of modern computer systems, and to introduce them to assembly language programming.

Software Engineering
This course covers the fundamentals of software engineering with a focus on the software lifecycle and developing quality software as a team. Topics covered include requirements, specification, design, quality assurance and testing, process, as well as tools and environments. The course will include a programming project in which teams of 4-6 students take a high-level concept provided by the instructor from requirements through implementation.
This course will introduce students to the basics of software engineering, focusing on lifecycle, team and technical activities.

Operating Systems and Systems Administration
Topics relating to the principles of operating system design will include process management, memory management, auxiliary storage management, and resource allocation. Topics relating to the administration of operating systems will include installation, configuration, systems management and applications support. The course will include a team project.
The goal of this course is to provide students with an understanding of the issues confronting the design and management of an operating system. Students will also develop skills in concurrent programming.

Database Management
This course provides a comprehensive overview of database systems. Students will learn the fundamentals of data access and file systems, including hierarchical, network, relational and object oriented data models. The course will cover the elements of relational database design, data query languages, services such as data protection and integrity control, and database management. The course will provide a balance of theory and practical application and will culminate in a database implementation project conducted by teams of students.
This course will provide a basic introduction to the concepts of database system design and implementation including data models, query languages and transaction processing.

Human Computer Interaction
This course covers topics in human-computer interaction, including user-centered design, user interface software architecture, rapid prototyping and iterative design, and evaluation techniques. The goal of this course is to introduce students to tools and skills that can be applied to the process of user interface design.

Web Technologies
This course will cover the central concepts and technologies related to the World Wide Web. Topics covered will include basic and advanced HTML, scripting and active pages, design and developing Web-based applications, principles and tools for Web content creation, database fundamentals for the Web, security, and e-commerce basics. The primary goal of this course is to introduce many of the technologies and skills needed to design, develop, and deploy effective Web sites.

Application Course
This course will depend on student interest and the availability of instructors. We give here two sample catalog descriptions.

Example: Computer Graphics
This is an introduction to computer image synthesis and interactive computer graphics applications. Topics include computer graphics hardware, color image display, event-driven programming, line drawing, polygon scan conversion, texture mapping, image morphing, image composition, curves and surfaces, hidden surface algorithms, local illumination models, ray tracing, and photo realistic image synthesis.

Example: Artificial Intelligence
This course covers the principal ideas and developments in artificial intelligence: theorem proving, problem-solving methods, and representation of knowledge, natural language analysis and synthesis, and programming languages for artificial intelligence.

Networks and Distributed Computing
This course introduces the underlying principles of computer network design, from the physical layer up through data transport protocols. Methods and mechanisms for constructing distributed computing systems and network services are discussed in the context of common Internet systems such as electronic mail, print and file servers and Web services. The goal of this course is to provide students with an understanding of how to construct large-scale computer networks.

Advanced Topics in Computer Science
This course will cover an advanced topic in computer science depending on teacher availability and student interest. An example of a course that might be covered is Very Large Scale Integration (VLSI).

Example: Very Large Scale Integration (VLSI)
This course will provide an introduction to CMOS technology and circuit design; implementation of combinational and sequential logic; VLSI design methodologies; CAD tools for layout, simulation and validation. Students will design a VLSI chip using modern CAD tools.

Back to top

Copyright 1999-2005 Ashesi University Foundation. All rights reserved.