ǿմý

OVERVIEW
OVERVIEW

The BSc in Computer Science program is concerned with the theoretical foundations of information and computation. Computation is defined as any type of calculation or use of computing technology that follows well-defined models (such as algorithms and protocols) in the practice of information processing. The study of computer science involves systematically studying, building, and testing methodical processes (such as algorithms) in order to aid the acquisition, representation, processing, storage, and communication of information. The program provides a strong understanding of the relationship between computer hardware and software and all related issues. It is key to many career opportunities in high-tech manufacturing, in software development, and in mobile and digital security. Students are offered opportunities to customize their education by selecting from a wide pool of technical elective courses.

Program Enrolment and Degree Data
Number of Enrolled Students
TERM COUNT
Fall 2023 299
Fall 2022 138
Fall 2021 64
Fall 2020 19
Number of Graduates
Academic Year Count
2022 6
Program Educational Objectives

The program’s graduates are expected to be able to:

  • Develop in their chosen profession and/or progress toward an advanced degree
  • Gain the trust and respect of others as effective and ethical team members
  • Achieve a reputation as a source of innovative solutions to complex problems in computer science and related areas; and
  • Reach positions of leadership in an organization and/or on teams.
Program Learning Outcomes

Upon successful completion of the BSc in CS program, the graduates of the B.Sc. in Computer Science program will be able, without guidance, to:

(1)

An ability to analyze a complex computing problem and to apply principles of computing and other relevant disciplines to identify solutions.

(2)

An ability to design, implement, and evaluate a computing-based solution to meet a given set of computing requirements.

(3)

An ability to communicate effectively in a variety of professional contexts.

(4)

An ability to recognize professional responsibilities and make informed judgements in computing practice based on legal and ethical principles.

(5)

An ability to function effectively as a member or leader of a team engaged in activities appropriate to the program’s discipline.

(6)

An ability to apply computer science theory and software development fundamentals to produce computing-based solutions.

Career Opportunities

Computer Scientists usually work in research laboratories that design, build and test various types of computer software models. Most work in high-tech manufacturing firms in the software development, mobile and digital security industries. There are also computer systems opportunities in design firms, research and development firms, or in governmental bodies such as defense, armed forces, police, health care and information technology (IT).

Career Specializations

Some indicative career specializations include:

  • Artificial Intelligence
  • Cloud Computing
  • Data Mining and Business Intelligence
  • Game Development
  • Digital Security/Cryptography
  • Mobile Applications Development
  • Robotics
  • Software development & Testing
  • Virtualization
  • Web and Multimedia Design
STRUCTURE & REQUIREMENTS
Course Descriptions

Course Description of Computer Science

 

COSC 114 Introduction to Computing – Python (2-3-4)

This course introduces computer systems, including computer hardware components, operating systems, compiling, debugging, libraries, and linking. It focuses on programming-based problem-solving that covers the program development lifecycle. It includes imperative programming such as data types, conditional expressions and statements, repetitive structures, arithmetic and logic operators, functions, arrays, strings, data structures (database, tuple), and file Input/Output (I/O).

 

COSC 202 Data Science and Artificial Intelligence (2-3-3)

Prerequisites: COSC 114

The course provides a comprehensive introduction to data science and Artificial Intelligence (AI), emphasizing practical applications and hands-on implementation. Students are introduced to fundamental concepts spanning the data science and AI pipeline, from data preprocessing to machine learning techniques. Students gain hands-on experience with real-world datasets and learn to develop, evaluate, and select machine learning models. The course includes critical discussions on ethical and privacy considerations and information security measures, including data security, privacy, opacity, bias, and machine ethics.

 

COSC 101 Foundations of Computer Science (2-3-3)

Prerequisites: COSC 114

 

The course provides a comprehensive, high-level introduction to computer science. It exposes students to various topics from computer science and its applications, including system software, computer networks, cloud computing, databases, artificial intelligence & machine learning, and information security. Python programming language and the basics of web development will also be covered.

 

COSC 201 Computer Systems Organization (2-3-3)

Prerequisites: COSC 101

 

This course thoroughly explains computer logical organization, including components and interrelationships. It covers the central processor’s native language and basic architectures for high-performance design. Topics include Von Neumann architecture, low-level aspects of C programming, data representation, computer arithmetic, assembly language programming, and digital logic design.

 

COSC 230 Object-Oriented Programming (3-3-4)

Prerequisites: COSC 114

 

The course covers the foundation of object-oriented concepts and programming. Basic Object- Oriented Programming (OOP) concepts include objects, classes, methods, parameter passing, information hiding, inheritance, exception handling, and polymorphism. The course covers Java language elements and characteristics, including data types, operators, control structures, and search and sort algorithms.

 

COSC 301 Automata, Computability, and Complexity (2-2-3)

Prerequisites: COSC 101, MATH 234

 

This course is about fundamental ideas in the theory of computation, including formal languages, computability, and complexity. In this course, students gain proficiency in the concepts of automata, formal languages, grammar, algorithms, computability, decidability, and complexity.

 

COSC 310 Data Structures (2-3-3)

Prerequisites: COSC 230, MATH 234

 

The course reviews object-oriented design and discusses algorithm complexity, Big-O notation, and tractable and intractable algorithms. The course introduces concepts of abstract data types, basic data structures (i.e., lists, stacks, queues, and trees), and advanced data structures (i.e., graphs, sets, and heap). It also presents fundamental computing algorithms, including sorting, searching, and graph algorithms.

 

COSC 312 Design and Analysis of Algorithms (2-2-3)

Prerequisites: COSC 301, COSC 310

 

This course presents the key algorithmic strategies and solution methodologies, irrespective of programming language or hardware platform. It delves into Big-O notation, analysis of worst and average cases, handling recurrences, and asymptotic behavior. The student will explore efficient sorting, searching, and selection algorithms. Additionally, the course delves into algorithm design techniques, addressing fundamental graph problems, string manipulation algorithms, and numerical methods.

 

COSC 320 Principles of Programming Languages (2-3-3)

Prerequisites: COSC 301

 

This course gives students a basic understanding and appreciation of the various essential programming language constructs, programming paradigms, evaluation criteria, and language implementation issues. The topics cover imperative, object-oriented, functional, logic, and concurrent programming concepts. These concepts are illustrated by examples from various languages such as Pascal, C, C++, C#, Java, Python, Lisp, Scheme, Haskell, and Prolog. Some basic aspects of compiler design, like lexical and syntax analysis, are also covered.

 

COSC 330 Introduction to Artificial Intelligence (2-3-3)

Prerequisites: COSC 230

 

This course allows the students to explore the foundational principles and contemporary advancements in Artificial Intelligence (AI). It presents the historical evolution of AI alongside practical problem-solving methodologies like search algorithms and knowledge representation. The course covers intelligent agents, decision trees, and Bayes classifiers, in addition to some cutting-edge topics such as game theory, reinforcement learning, and fuzzy logic, to gain a holistic understanding of AI’s diverse applications and methodologies.

 

COSC 333 System Analysis & Software Design (2-3)

Prerequisites: COSC 336

 

This course dives into software analysis and design, emphasizing object-oriented and scenario-based approaches. It guides students through the development process from requirements to implementation, highlighting model refinement, domain partitioning, and object design. The curriculum includes practical training in model-driven design and UML for crafting comprehensive software descriptions.

 

COSC 336 Introduction to Software Engineering (2-3-3)

Prerequisites: COSC 230

 

The course introduces software engineering concepts and best practices. It discusses software processes and project management concepts. The course elaborates on software requirements, modeling, design, testing, and maintenance. It gives examples of unified modeling language diagrams and emerging software development methods.

 

COSC 340 Introduction to Computer Security (2-2-3)

Prerequisites: COSC 354

 

This course introduces the fundamentals of computer security, exploring cryptography basics, program security, and web vulnerability mitigation, including SQL injection. It dives into authentication methods, such as defense against spoofing attacks, and access control mechanisms like role-based systems in Linux. It also explains malware detection strategies and emerging threats, which are essential for navigating today’s cybersecurity landscape.

 

COSC 354 Operating Systems (2-3-3)

Prerequisites: COSC 230

 

This course covers the important problems in operating system design and implementation. The course discusses a brief historical perspective of the evolution of operating systems and presents the major components including process management (processes, threads, CPU scheduling, inter-process communication, and deadlock management), memory management (paging, segmentation, and address translation), device and file management.

 

COSC 377 Undergraduate Research (Variable course credits from 1 to 3)

Prerequisites: Department Approval and Junior standing; students must have a CGPA of 3.3 or more.

 

This course provides an opportunity for students, working individually or in small groups, to develop an enhanced understanding and application of specific research methods and creative practices. The course helps students improve their education and integrate into the KU research community by actively and successfully engaging in research, innovative, and scholarly projects under a faculty member’s supervision. This course serves as a free or technical elective.

 

COSC 401 Computational Social Science (2-3-3)

Prerequisites: COSC 312, COSC 410

 

The course delves into computational social science, utilizing data science techniques to explore social phenomena. It covers analyzing digital traces from social media, telecommunication, and web-based experiments, alongside mobile phone and wearable sensor data. Topics encompass computational social science overview, digital trace analysis, web-based experiment design, mobile device data analysis, social media analysis, and crowdsourcing techniques in data science.

 

COSC 410 Parallel and Distributed Computing (2-3-3)

Prerequisites: COSC 312, ECCE 354

 

This course covers relevant topics related to parallel and distributed computing from architectural and algorithmic perspectives. It presents core concepts and examples of applications of parallel distributed computing. The course elaborates on parallelism in Python, multi-threading, networks and message-passing interfaces for cluster computing, fork-join parallelism, and shared-memory concurrency control.

 

COSC 430 Data Analytics (2-3-3)

Prerequisites: COSC 330; MATH 242/ 243

Co-requisite: COSC 434

 

This course covers various data analytics techniques, including a broad set of computational and statistical methods and tools needed to draw insights from data. The course includes programming in Python and powerful data analysis libraries such as NumPy and Pandas. The course consists of a significant data analytics project.

 

COSC 432 Algorithmic Robotics (2-3-3)

Prerequisites: COSC 330

 

This course introduces the fundamental disciplines of modern robotics: mechanics, control, and computing. These components are integrated into the analysis, design, and control of mobile robots and manipulators to serve engineering or scientific needs. Students learn to use mathematical methods to model mobile robots and manipulators, plan their motion, process sensor information to form a perception of the environment, and implement algorithms through computer systems to achieve autonomy.

 

COSC 434 Introduction to Machine Learning (2-3-3)

Prerequisites: COSC 330, MATH 204, MATH 243/242

 

This course covers various contemporary techniques in machine learning. Overall topics include classes of machine learning (supervised, unsupervised), linear and logistic regression, non-parametric methods, Naïve Bayes, neural networks, support vector machine, k-means, hierarchical clustering, etc. The course uses Python machine learning libraries extensively.

 

COSC 435 Introduction to AI/ML for Cybersecurity (3-3)

Prerequisites: COSC 330, COSC 340

 

This course uses artificial intelligence, machine learning techniques, and algorithms to design cybersecurity systems and solutions. Particular emphasis is given to machine learning system design principles to implement production-quality cybersecurity systems.

 

COSC 436 Software Testing and Quality Assurance (3-3)

Prerequisites: COSC 336

 

The course examines maintenance and testing activities within the software life cycle, presenting fundamental Quality Assurance principles and methodologies for analyzing quality and complexity metrics. Students will gain proficiency in various black-box and white-box testing techniques, exploring system testing, integration testing, and object-oriented testing methodologies.

 

COSC 438 Software Architecture (3-3)

Prerequisites: COSC 333

 

This course presents the fundamental concepts and methodologies involved in Software Architecture. In addition to demonstrating common software architectures, the course covers Inter-Process Communication and Design Patterns, providing students with reusable solutions to common problems in software design. Specialized Software Architectures are also discussed, highlighting their role in addressing specific system requirements.

 

COSC 440 Digital Forensics (2-3-3)

Prerequisites: COSC 340

 

This course introduces principles, techniques, and tools to perform digital forensics, which encompasses recovering and investigating material found in digital devices about cybercrime and other crimes where digital evidence is relevant. Students learn evidence extraction and analysis on UNIX/Linux, Windows, and macOS systems, networks, web applications, and mobile devices; they also gain exposure to available tools. Some legal/ethical aspects of digital forensics are also discussed.

 

COSC 442 Applied Cryptography(2-3-3)

Prerequisites: COSC 340

 

This course builds upon the concepts covered in the course “Introduction to Computer Security” and presents security protocol designs and advanced topics in applied cryptography. The course covers a comprehensive set of topics, including cryptographic protocol design, zero-knowledge proofs, multi-party encryption protocols, blockchain technology, encrypted machine learning, and secure hardware technologies.

 

COSC 444 Database Systems (2-2-3)

Prerequisites: COSC 336

 

This course covers fundamental database concepts, emphasizing data models such as Entity- relationship and Relational models. Students learn SQL for data manipulation and maintenance in relational databases. The course addresses the concept of data integrity throughout its lifecycle and covers normalization to minimize redundancy. Additionally, it explores storage access techniques for efficient data management.

 

COSC 449 iOS App Development (3-3)

Prerequisites: COSC 230

 

This course provides students with the fundamentals of mobile computing and mobile application development using Apple’s iOS SDK. An introduction to the Swift programming language, including object-oriented design and the model-view-controller pattern, will be covered. Students learn to create fully featured iPhone applications using iOS APIs and tools like XCode. User interface and application design considerations specific to mobile technologies are also explored.

 

COSC 452 Human-Computer Interaction (3-0-3)

Prerequisites: COSC 336

 

This course introduces and overviews the human-computer interaction (HCI) field. HCI theories, principles, and guidelines, including HCI design and user interface design principles, are covered. In addition, different types of user interface evaluation techniques are also explored, including expert reviews, predictive models, and usability testing. Students work on a team project to design, implement, and evaluate computer interfaces.

 

COSC 456 Image Processing and Analysis (3-0-3)

Prerequisites: COSC 230

 

The course covers essential topics such as Human Visual Perception, Color Spaces, and Histogram Equalization for image enhancement. It explores Frequency Domain Representation and 2D Filters for noise reduction and restoration. Additionally, Image Segmentation and Compression techniques are discussed for efficient data handling.

 

COSC 460 Bioinformatics and Genomic Data Science (2-3-3)

Prerequisites: COSC 312

 

This course introduces students to bioinformatics, merging Computer Science and Molecular Biology/Genetics. It tackles Big Data generated from biotechnology, primarily sequential data such as DNA and protein sequences. It bridges the gap between existing algorithms and developing next-generation bioinformatics tools by understanding the algorithmic underpinnings. The course covers standard sequence analysis techniques, phylogeny, common data formats and storage techniques, and cutting-edge topics like CRISPR and Deep Learning.

 

COSC 464 Natural Language Processing (2-3-3)

Prerequisites: COSC 330

 

The course comprehensively introduces Natural Language Processing (NLP), focusing on systems and algorithms for understanding, communicating, and analyzing human language data. Students learn about the challenges NLP systems encounter, methods to tackle these challenges, and their pros and cons. Emphasis is placed on recent data-driven techniques, especially neural networks and deep learning methods, which are trained using labeled text corpora rather than manual programming.

 

COSC 477 Undergraduate Research (Variable course credits from 1 to 3)

Prerequisites: Department Approval Senior Standing; students must have a CGPA of 3.3 or more.

 

This course provides opportunities for students, working individually or in small groups, to develop an enhanced understanding and application of specific research methods and/or creative practices. The course assists students in improving their education and becoming integrated into the KU community by successfully engaging in research and innovative and scholarly projects under the supervision of a faculty member. This course serves as a free or technical elective.

 

COSC 496 Artificial Intelligence Project (0-3-2)

Prerequisites:Senior standing and department approval

Co-requisite:COSC 434

 

Over the course of the semester, a small team of students will work closely with a faculty member of their department or Computer Science department to address significant research or development questions on an artificial intelligence (AI)-related project. The team will combine and apply a broad range of AI concepts and techniques to the questions and will exercise advanced critical thinking and evaluation as the project progresses.

 

COSC 497 Senior Design Project I (1-6-3)

Prerequisites: COSC 312 and Senior Standing

 

COSC 498 Senior Design Project II (0-9-3)

Prerequisites:COSC 497

 

During these courses, students participating in team projects work on problems with specific objectives and constraints to propose, design, develop, and document solutions. Some projects the department offers have a multi-disciplinary nature, i.e., involve other engineering departments. The students exercise initiative, judgment, self-reliance, and creativity and interact in a team environment similar to that in industry. Oral and written presentations are required.

 

TYPICAL STUDY SEQUENCE