Logo Academics

AcademicsFacultyCoursesCalendarLibrary

Computer Science

In addition to courses in the Liberal Arts Core, students majoring in Computer Science take the following courses:


Programming I: Fundamental Ideas in Computer Science
This course will cover the basics of information technology literacy, including hands-on use of microcomputer applications, principles of digital computers and information technology and an introduction to problem-solving through programming. The algorithmic concepts will be illustrated in Visual Basic and will include the concepts of elementary data types and variables; arithmetic expressions and assignments; program control flow; and using prewritten functions.
The goal of this course is to introduce students to common desktop and database applications and to elements of basic programming and of problem solving using the computer.

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.

Artificial Intelligence
This course covers the principal ideas and developments in artificial intelligence selecting form a broad range of topics, such as: problem-solving methods, representation of knowledge, machine learning, natural language analysis and synthesis, and programming languages for artificial intelligence. Through the written and programming assignments, students will be encouraged to explore how different AI techniques can be applied to solve real world problems.

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.

Robotics
This hands-on introduction to the field of robotics and artificial intelligence is designed to challenge students to think creatively and to teach them to integrate diverse areas of knowledge such as Computer Science, Design, Electrical Engineering, Mechanical Engineering and Math to create innovative systems. In this course, students will work individually and in groups to build robots using Lego robot building kits and to program them using microcontrollers. Through these projects, students will learn how to write programs that control a physical device. They will learn to read and understand research papers, to give presentations to technical and non-technical audiences, and follow a project through from an initial idea through design to implementation.

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.

Managing New Product Development
This course for business and computer science majors is designed to develop interdisciplinary skills required for successful product development in today's competitive marketplace. Business and computer science students join forces in small product development teams to step through the new product development process in detail, learning about the available tools and techniques to execute each process step along the way. Each student brings his or her own disciplinary perspective to the team effort, and must learn to synthesize that perspective with those of other students in the group to develop a sound, marketable product. Students will gain an understanding of new product development processes as well as useful tools, techniques and organizational structures that support new product development practice.

Thesis
Students must select one of three possible ways to fulfill their thesis requirement.

(1) Entrepreneurship
This course is fundamentally about how to start a scalable business. Scalable businesses are those that can be expected to develop into complex enterprises. By focusing on businesses that have significant growth potential, this course challenges students to think through many aspects of running an enterprise. The unifying framework for this course will be a class project in which students work in teams to write business plans intended to attract support from venture capitalists and other investors. Students will also be required to make oral presentations to potential investors. The course places a heavy emphasis on case studies and discussions with business leaders. Entrepreneurial teams can consist of both business and computer science students.

(2) Applied Project
In this course, students will work individually or in teams on a real-life project at a firm operating in Ghana. Students will be assigned a faculty advisor. Business students will typically be required to write up a case study that adds to the body of knowledge about doing business in Ghana and Africa. Computer Science students may work on specific software or information technology projects for companies operating in Ghana or abroad. In addition to a written report, students will be required to make oral presentations to their peers, faculty advisors, and their host companies. Teams working on applied projects can consist of both business and computer science students.

(3) Research Project
In this course, students will work individually or in teams on original research in their area of interest. Students will be assigned a faculty advisor at Ashesi, but may in addition work with faculty living abroad via electronic correspondence. In addition to a written report, students will be required to make oral presentations to their peers and faculty advisors.

Course Descriptions
Liberal Arts Core
African Studies
Business Administration
Computer Science
Management Information Systems

 

Course Websites
Four Year Curriculum
Course Codes & Prerequisites


Back to top


Copyright © 1999-2008 Ashesi University Foundation. All rights reserved.