📚 2024-2025 at Kuwait University

CS 497 - Topics in Computer Science II
Topics in Computer Science
Exploring topics in Computer Science in an undergraduate-level course.

CS 365 - Artificial Intelligence
Artificial Intelligence
This undergraduate-level course introduces the logical foundations of AI and explores problem-solving methods with an emphasis on search techniques. Students learn about knowledge representation, reasoning under uncertainty, and their applications in expert and planning systems. The course concludes with an introduction to machine learning, focusing on genetic algorithms and neural networks. Practical programming tasks require familiarity with functional and logical programming languages, providing hands-on experience with AI concepts and methodologies.

CS 142 - Computer Programming II
Computer Programming II
This undergraduate-level course focuses on advancing students’ understanding of object-oriented programming (OOP). The course emphasizes core OOP principles, including encapsulation, data abstraction, and the design of abstract data types using classes. Students explore inheritance to create class hierarchies and learn about dynamic binding and polymorphism to develop flexible, reusable software solutions. Through hands-on lab sessions, students gain practical experience in applying these concepts to design and implement modular, efficient, and scalable object-oriented systems.

CS 111 - Discrete Mathematics
Discrete Mathematics
Discrete Mathematics is a foundational undergraduate-level course that equips students with the mathematical tools and logical reasoning skills necessary for computer science. The course introduces concepts such as sets, relations, functions, propositional and predicate logic, combinatorics, graph theory, and number theory. Students learn how to apply these principles to solve problems in algorithms, data structures, cryptography, network design, and database systems. Emphasis is placed on understanding mathematical proofs, including induction and contradiction, as well as developing the ability to model real-world problems using discrete structures. This course bridges the gap between theoretical mathematics and practical applications in computing.