Computer Science

Courses

CSCI 1002: INTRO TO COMPUTER SCIENCE

Credits 3
This course is an introduction to the field of Computer Science (CS). A scientific foundation of many aspects of CS will be developed upon which more advanced CS courses will build. Technical topics may include: computer design, information processing, algorithm concepts, operating systems, cyber security and networking and the internet. The evaluation of issues such as Artifical Intelligence & Ethics, Internet of Things (IoT), Big Data and Impact of Technology on Social Development Skills may also be included.

CSCI 1010: PROGRAMMING I

Credits 3
PREREQUISITE: CSCI1002 This course introduces the art of algorithm design and problem solving in the context of computer programming. The basic structure and logic of the Java language is presented. Topics covered include data types and operators, control flow, repetition and loop statements, arrays and pointers. Good programming practices will be taught and encouraged.

CSCI 1015: VISUAL BASIC PROGRAMMING

Credits 3
This course introduces computer programming in general, and the Visual Basic programming language in particular. Topics covered include data types and operators, control flow, repetition and loop statements, arrays, and structures. The intent is to familiarize the student with the MS Windows Programming environment using Visual Studio and graphical user interfaces using frames, windows, dialog boxes, and common controls. Good programming practices will be taught and encouraged.

CSCI 2010: PROGRAMMING II

Credits 3
PREREQUISITE: CSCI1010. This course is a follow-on to Programming I. Topics covered include; data structures, file input and output, and other advanced object-oriented programming concepts found in Java.

CSCI 2017: DISCRETE STRUCTURES FOR

Credits 3
PREREQUISITE: MATH1010 Discrete structures, also known as discrete mathematics, lie at the foundation of computer science. The discrete structures studied in this survey course comprise basic logic and proof techniques; sets, relations, and functions; the basics of counting; discrete probability; and graphs and trees.

CSCI 2020: ALGORITHM ANALYSIS

Credits 3
PREREQUISITE: CSCI2010 This course teaches techniques of programming utilizing data structures such as lists, stacks, and queues and algorithmic approaches such as recursion, searching and sorting. These techniques are learned through programming exercises as well as classroom study.N×

CSCI 2025: SYSTEMS PROGRAMMING

Credits 3
PREREQUISITE: CSCI2010 This course will introduce the students to the important systems language,C,and to several topics related to the hardware and software environment. These are issues related to system interfaces and software synchronization provided by operating systems, the linkage of operating system services to application software, and the fundamental mechanisms for computer communications.

CSCI 2025L: SYSTEMS PROGRAMMING - LAB

Credits 1
PREREQUISITE: CSCI2010 This course will provide the hands-on laboratory component to the Systems Programming course which will introduce the students to the important systems language,C,and to several topics related to the hardware and software environment. These are issues related to system interfaces and software synchronization provided by the operating system, the linkage of operating system services to application software, and the fundamental mechanisms for computer communications.

CSCI 2030: ANALOG ELECTRONICS

Credits 3
This is an introductory course of electronics. Students will learn the fundamental principles of electronics circuit chips. Topics to be studied include basic circuit theory, diode applications, Bipolar and Field Effect transistors, operational amplifiers, and basic TTL gates. This course will provide students with both theoretical and practical knowledge necessary to start an understanding of computers and data communaction devices.

CSCI 2033: MECHATRONICS

Credits 3
PREREQUISITES: CSCI1002, CSCI1010/L &PHYS1032/L. This course introduces students to mechatronics, an interdisciplinary field integrating mechanics, electronics, and computing. Emphasizing hands-on applications in robotics and automation, the course covers circuit design, sensors, actuators, microcontroller programming, and feedback control. Students develop and test real-time embedded systems for autonomous robotic applications.

CSCI 2033L: MECHATRONICS

Credits 1
CSCI2033L – Mechatronics lab course provides hands-on experience in mechatronics, integrating mechanical systems, electronics, computer control, and embedded systems. Students will apply theoretical concepts from the lecture section to practical projects, focusing on system modeling, circuit design, microcontroller programming, and motion control. The lab emphasizes real-world applications, troubleshooting, and optimization of mechatronic systems.

CSCI 2035: COMPUTER ORGANIZATION AND DESIGN

Credits 3
PREREQUISITE: CSCI2025 This course will introduce students to the function and design of digital computers. Topics covered include: Value representation, ALU structure and operation, simple digital electronics, basic assembly language programming, I/O and bus architectures, and complex processor architectures including virtual memory.

CSCI 2035L: COMPUTER ORGANIZATION & DESIGN LAB

Credits 1
This course will provide the hands-on laboratory component to the Computer Organization & Design course which will introduce the students to digital design and assembly language programming.

CSCI 2055: DATABASE-SYSTEMS THEORY

Credits 3
PREREQUISITE: CSCI1010 This course is designed to present the essential concepts, principles, techniques, and mechanisms for the design, analysis, use, and implementation of computerized database systems. Key information management concepts and techniques are examined: database modeling and representation; information interfaces - access, query, and manipulation, implementation structures, and issues of distribution. The database and information management system technology examined in this course represents the state-of-the-art, including traditional approaches as well as recent research developments. The course should allow the student to understand, use, and build practical database systems. The course is intended to provide a basic understanding of the issues and problems involved in database systems, a knowledge of current practical techniques for satisfying the needs of such a system, and an indication of the current research approaches that are likely to provide a basis for tomorrow's solutions.

CSCI 3028: SPECIAL TOPICS:

Credits 1
This course is designed to prepare interested students for the emerging global standard for entry level software developers, the Software Developer Certification (SDC). The SDC is being created at Carnegie Mellon University, is funded by Kenya through money made available by the World Bank. A number of major international software companies are using the SDC to help in selecting the right people to bring into the employment onboarding process.

CSCI 3032: ELECTRONIC COMMUNICATION

Credits 3
This course will present the fundamental technology of wireless and cable telecommunications. Students will become familiar with modulation/demodulation and noise reduction for high-fidelity electronic and data communications. They will also learn advanced data communication technologies such as digital broadband technology. Transition from electronics (applications of electrons) to photonics (applications of light and photons) is also presented. Hands-on laboratory projects will be conducted in connection with the basic hardware of telecommunication not covered in CSCI2030 and CSCI3030.

CSCI 3040: OPERATING SYSTEMS

Credits 3
PREREQUISITE: CSCI2035 This course is an in-depth study of modern operating systems. Students will learn about the services provided by an operating system, how to use these services and how the services are implemented. Topics covered include: Initialization (boot), Processes, Controlling shared resources, Memory, Bulk storage systems, and Network Communications (TCP/IP) as they relate to the computer operating system.

CSCI 3042: COMPUTER SECURITY

Credits 3
PREREQUISITE: CSCI1010 This course covers fundamental issues and first principles of security and information assurance. The course will look at the security policies, models and mechanisms related to confidentiality, integrity, authentication, identification, and availability issues related to information and information systems. Other topics covered include basics of cryptography (e.g., digital signatures) and network security (e.g., intrusion detection and prevention), risk management, security assurance and secure design principles, as well as e-commerce security. Issues such as organizational security policy, legal and ethical issues in security, standards and methodologies for security evaluation and certification will also be covered.

CSCI 4010: COMPILER DESIGN

Credits 3
Compiler Design is an area of computer science where students learn formal language definitions and grammars. They will ultimately learn how to translate one language into another. This subject has many applications besides just the creation of language compilers!

CSCI 4020: INTRO TO SOFTWARE ENGINEERING

Credits 3
This course is an introduction to field of software engineering. It will combine a range of topics integral to the design, implementation, and testing of a medium-scale software system with the practical experience of implementing such a project as a member of a programmer team.

CSCI 4035: MOBILE APPLICATIONS DEVELOPMENT

Credits 3
PREREQUISITE: CSCI2020 This course will provide a comprehensive introduction to the design and implementation of applications for mobile devices, such as smartphones and tablets using either Android or iOS systems. It will cover the fundamental programming principles, software architecture and user experience considerations underlying mobile software applications and their development environments.

CSCI 4035A: MOBILE APPLICATIONS DEVELOPMENT

Credits 3
PREREQUISITE: CSCI2010 This course will provide a comprehensive introduction to the design and implementation of applications for mobile devices, such as smartphones and tablets using the operating system. It will cover the fundamental programming principles, software architecture and user experience considerations underlying mobile software applications and their development environments.

CSCI 4035I: MOBILE APPLICATIONS DEVELOPMENT

Credits 3
PREREQUISITE: CSCI2010 This course will provide a comprehensive introduction to the design and implementation of applications for mobile devices, such as smartphones and tablets using the operating system. It will cover the fundamental programming principles, software architecture and user experience considerations underlying mobile software applications and their development environments.

CSCI 4040: PRINCIPLES OF PROGRAMMING

Credits 3
PREREQUISITE: CSCI2025 This course provides a general introduction to programming language features and design, with a focus on techniques that will help students to quickly and efficiently learn new programming languages in the future. Current trends and issues in programming languages will be discussed.

CSCI 4042: ADVANCED COMPUTER SECURITY

Credits 3
PREREQUISITE: CSCI3042 This course builds upon the foundational principles students have learned in the introductory Computer Security course. It examines the underlying mechanics of the rapidly expanding and essential role that computer security plays in the digital age. Given the rapidly changing nature of this highly technical field, course topics will focus on current issues and applications. In addition, this course includes practical writing assignments and hands-on advanced technical skill building labs.

CSCI 4045: COMPUTER NETWORKS AND

Credits 3
PREREQUISITE: CSCI2025 This course introduces the fundamentals of computer networking for distributed applications. Topics covered include network architecture, protocols, standards, security and socket programming. The course provides students with the ability to create programs making appropriate use of networked architectures with a specific focus on the Internet.

CSCI 4050: NUMERICAL COMPUTING I

Credits 3
A survey of numerical techniques for numerically solving a variety of mathematical problems with an emphasis on application as opposed to theory. Topics to be covered include: sources of error in numerical computations, solving non-linear equations, solving sets of simultaneous equations, interpolating polynomials, numerical integration and numerical differentiation.

CSCI 4051: NUMERICAL COMPUTING II

Credits 3
Second semester of a survey course in numerical techniques for the numerical solution of a variety of mathematical problems with an emphasis on application as opposed to theory. Topics to be covered include: initial-value problems, partial differential equations, curve fitting and approximation of functions.

CSCI 4055: ADVANCED DATABASE THEORY

Credits 3
PREREQUISITE: CSCI2055 This course is a continuation of Database-Systems Theory. It concentrates on object-oriented database design, object relational design, data warehousing, data marts, and data mining. Emphasis will be placed on modeling languages such as UML, ODMG, as well as ODL and SQL3 standards. Also, Online Analytical Processing and its relationship to data warehousing, data mining, and decision support systems will be discussed.

CSCI 4070: INTRO TO ARTIFICIAL INTELLIGENCE

Credits 3
This course will provide an introduction to the fundamental concepts and techniques underlying the construction of intelligent computer systems. Topics covered in the course include: problem solving and search; logic and knowledge representation; planning; uncertain knowledge and reasoning; and machine learning. Formal approaches will support implementation, both through available tools and student-written functions.

CSCI 4080: FUNDAMENTALS OF ROBOTICS

Credits 3
This course offers the fundamentals of robotics, covering the basic principles, components, and applications of robots. Students will learn about robot design, programming, and kinematics, sensors, actuators, and control systems, and as well as the ethical and societal implications of robotics. The lab section is designed to provide hands-on experience on robotics system development.

CSCI 4080L: FUNDAMENTALS OF ROBOTICS - LAB

Credits 1
CSCI4090L Fundamentals of Robotics Lab is an essential course designed for hands-on robotics related design and development activities for the undergraduate students pursuing a Robotics Minor and individuals seeking a Certificate in Robotics. This course provides hands-on design guidance by applying the knowledge gathered from the CSCI4090 lecture class, which covers comprehensive introduction to the principles, theories, and applications of robotics. Students will gain hands-on experience in programming and controlling robotic systems, preparing them for careers in various industries.