PROGRAMS

Bachelor of Science in Computer Science

Bachelors of Science in Computer Science

The Department of Computer Science offers the undergraduate degree Bachelor of Science in Computer Science (BSCS).  As per NU policy and Bologna guidelines, the undergraduate degree program requires a minimum of 240 total ECTS credits.

 

 

Technical Electives for the BSCS degree can be satisfied by any non-required course offered by the CS department, as well as the following courses offered by other departments:

  • MATH 351 Introduction to Numerical Methods with Applications
  • MATH 407 Introduction to Graph Theory
  • MATH 417 Cryptography
  • PHYS 270 Computational Physics
  • ROBT 310 Image Processing
  • ROBT 407 Statistical Methods and Machine Learning

Minor in Computer Science

Students from other departments of SST or other schools within NU can earn a “minor” in Computer Science by completing a minimum of six (6) courses, constituting a minimum of 40 ECTS credits.  The two specifically required courses are:

  • CSCI 151 Programming for Scientists and Engineers (8 ECTS credits)
  • CSCI 152 Performance and Data Structures (8 ECTS credits)

The additional 24 ECTS credits must be earned through additional courses offered by the CS department, excluding internships (CSCI 299 and CSCI 399).

Industries where the major can be applied:

  • Computer hardware and software
  • Information Technology
  • Government
  • Education
  • Healthcare and Medicine
  • Banking
  • Military
  • Research and Development in Engineering and Sciences
  • Any sector that uses computers
Computer Science Undergraduate Curriculum

Current Four Year Course Schedule

(Applies to students starting Fall 2018 or after)

Year 1

Semester 1 (30 ECTS) Semester 2 (30 ECTS)
MATH 161  Calculus I MATH 162  Calculus II
PHYS 161 Physics I with Lab PHYS 162 Physics II with Lab
CSCI 151 Programming for Scientists and Engineers CSCI 152 Performance and Data Structures
HST 100 History of Kazakhstan (CORE) SHSS 150 (CORE Comm 1)

 

Year 2

Semester 3 (34 ECTS) Semester 4 (32 ECTS)
CSCI 231 Computer Systems & Organization CSCI 272 Formal Languages
CSCI 235 Programming Languages CSCI 270 Algorithms
MATH 273 Linear Algebra with Applications ROBT 206 Microcontrollers with Lab
MATH 251 Discrete Mathematics MATH 321 Probability
SHSS Communications 2 (CORE) Kazakh Language 1 (CORE)

 

Year 3

Semester 5 (30 ECTS) Semester 6 (30 ECTS)
CSCI 390 Artificial Intelligence CSCI 333 Computer Networks
CSCI 341 Database Systems CSCI 332 Operating Systems
CSCI 361 Software Engineering CSCI 307 Research Methods (CORE)
Natural Science Elective 1 Natural Science Elective 2
Kazakh Language 2 (CORE) CORE Entrepreneurship

 

Year 4

Semester 7 (30 ECTS) Semester 8 (24 ECTS)
CSCI 408 Senior Project I CSCI 409 Senior Project II
Technical Elective 1 Technical Elective 3
Technical Elective 2 Technical Elective 4
Free Elective 1
HSS Social Science (CORE) CORE Ethics

 

Total number of Credits: 240 ECTS

 

Previous CS Undergraduate Curriculum

(Applies to current students who started before Fall 2018) 

Year 1

Semester 1 (30 ECTS) Semester 2 (30 ECTS)
MATH 161  Calculus I MATH 162  Calculus II
PHYS 161 Physics I with Lab PHYS 162 Physics II with Lab
CSCI 151 Programming for Scientists and Engineers CSCI 152 Performance and Data Structures
HST 100 History of Kazakhstan Kazakh Language 1

 

Year 2

Semester 3 (34 ECTS) Semester 4 (32 ECTS)
CSCI 231 Computer Systems & Organization CSCI 272 Formal Languages
CSCI 235 Programming Languages CSCI 270 Algorithms
MATH 273 Linear Algebra with Applications ROBT 206 Microcontrollers with Lab
MATH 251 Discrete Mathematics MATH 321 Probability
Kazakh Language 2 HSS Elective 1

 

Year 3

Semester 5 (30 ECTS) Semester 6 (30 ECTS)
CSCI 390 Artificial Intelligence CSCI 333 Computer Networks
CSCI 341 Database Systems CSCI 332 Operating Systems
CSCI 361 Software Engineering CSCI 307 Research Methods (CORE)
Natural Science Elective 1 Natural Science Elective 2
HSS Elective 2 HSS Elective 3

 

Year 4

Semester 7 (30 ECTS) Semester 8 (24 ECTS)
CSCI 408 Senior Project I CSCI 409 Senior Project II
Technical Elective 1 Technical Elective 3
Technical Elective 2 Technical Elective 4
Free Elective 1
HSS Social Science (CORE) CORE Ethics

 

Total number of Credits: 240 ECTS

 

 

 

 

 

Undergraduate Course Descriptions

CSCI 101 – Introduction to Computational Scienc

This course is an introduction to Computer Science, designed for non-science majors.  It covers the principle ideas in computing, including programming, data encoding, machine architecture, networking, the internet and the web, algorithms, databases and artificial intelligence.

CSCI 111 – Web Programming and Problem Solving

The course is designed to provide insight and understanding of the protocols and technical characteristics of the Internet, web pages, spreadsheets, graphs, and programming. It will introduce students to computer-based tools and methods that will be useful throughout their university careers by developing skills in gathering data, performing routine analysis, and correctly presenting the results in a professional manner in documents, presentations, and web pages.

CSCI 115 – Programming Fundamentals (4 US / 8 ECTS credits)

The course introduces students to the fundamentals of programming and the development of basic algorithms to solve problems, with a focus on data gathering and analysis.  Students will learn the proper use of variables, control structures, loops, and functions, along with the creation and use of sequential and compound data types.

CSCI 151 - Programming for Scientists and Engineers (4 US / 8 ECTS credits)

The course introduces students to imperative programming and the development of basic algorithms using the C programming language.  A detailed presentation of the language syntax will be given, along with the proper use of control structures, loops, functions, and recursion to solve problems.  The creation and use of structures and arrays will also be covered, along with the development of libraries and multi-file programs.

CSCI 152 - Performance & Data Structures (Pre-req CSCI 151, 4 US / 8 ECTS credits)

Students will examine and implement major data structures in C++, and compare their implementation using both static and dynamic memory allocation techniques.  Assignments will require the students to assess problems and choose appropriate structures and relevant algorithms to achieve higher performance and understand the practical limits of computability.

CSCI 231 - Computer Systems & Organization (Pre-req CSCI 152)

The course will address the design and fundamental organization of computing systems, from the representation of instructions and data to the flow of control and interaction with system components.  Topics include memory management, storage systems, processor architectures, and low-level programming in the MIPS assembly language.

CSCI 235 - Programming Languages (Pre-req CSCI 152, 4 US / 8 ECTS credits)

The course provides an overview of the major conceptual paradigms of programming languages, from their theoretical foundations to practical implementation.  Topics will include the programming language categories of imperative, logical, functional, and object-oriented. Students should possess mastery of at least one high-level language, and are expected to implement coding assignments in each of the paradigms as part of the course.

CSCI 236 – Mobile and Ubiquitous Computing Projects (Pre-req CSCI 330)

This is a very hands-on course involving the development of several apps and their corresponding cloud services or web infrastructure with a commercial or real-world application in a small team using an agile development process. Open for non-majors.

CSCI 245 – Systems Analysis and Design (Pre-req CSCI 341)

The information systems field is focused on the analysis of an organization and the subsequent design of solutions to meet business requirements. In this course, students discover and follow a structured process called the systems development life cycle that companies use to identify and solve business problems.  In addition, alternative methodologies such as agile methods are also covered. Students learn tools and techniques for conducting projects, including how to gather system requirements, how to construct models of business processes using data flow diagrams, and gain hands-on experience with computer-aided software engineering (CASE) technology. Students practice the discipline of systems analysis and design by analyzing a hypothetical case situation. This course focuses on the systems analysis process, up to and including the development of a software requirements specification for a medium-sized information system.

CSCI 262 - Software Project Management (Pre-req CSCI 152)

The course gives a broad introduction to professional practices and software project management methodologies.  Concepts such as the software lifecycle and process models will be covered in the course, along with past and current issues in the field.  Project planning and management issues, including team organization and control, scheduling and tracking, risk analysis and mitigation, will also be key topics for discussion.  Quality assurance, management and complexity metrics, along with tools for aiding in the project management task will also be covered.  The PMBOK will be considered as well, providing the background knowledge necessary toward eventual PMP certification.

CSCI 270 – Algorithms (Pre-req CSCI 152)

The course covers common strategies for designing efficient algorithms, and the analysis of their performance in terms of time and memory.  Topics such as algorithm analysis (computational complexity and recurrence relations), searching and sorting, string processing, graph algorithms, and network flow are covered.  Computational intractability and NP-completeness/NP-Hardness are also discussed in this course.

CSCI 272 – Formal Languages (Pre-req CSCI 152 and MATH 251)

In this course, students will be introduced to formal languages and mathematical models of computation.  The topics of finite state and pushdown automata, regular expressions, and context-free grammars will be covered, along with applications such as text processing and compilers.  The later portion of the course will cover Turing machines and the Church-Turing Thesis.

CSCI 281 - Human–Computer Interaction (Pre-req CSCI 152)

This course focuses on the design and evaluation of human-computer interfaces covering topics such as: task analysis techniques for gathering design information, iterative design through prototyping, and formative and summative usability testing.  Through both classical and contemporary literature in computer science and cognitive psychology, we review the theoretical foundations of HCI and cognitive modeling of user interactions as well as the use of user cognitive and psycho-motor capabilities and constraints to generate new interaction designs.  In addition, the integration of HCI techniques into the software development life cycle are discussed and practiced in a group term project.  While this course has no prerequisites, some knowledge of computing and programming are assumed.

CSCI 299 – Internship I (Pre-req Third-year status)

Students can enroll for credit ranging from 1 to 3 credits, provided that the internship meets NU criteria, that a faculty member consents to serve as advisor, and that the student has completed a minimum of 60 credits prior to the start date of the internship.

CSCI 307 – Research Methods (Pre-req Third-year status and major in CS)

The seminar will expose students to current issues, challenges, and research in the field of Computer Science.  Faculty members will present active research projects, conducted both in Kazakhstan and with external collaborators.  Students will familiarize themselves with the leading journals in the field, conduct literature reviews and give presentations on selected topics leading to the preparation and presentation of a survey paper written in a manner consistent with publication standards for our professional societies.

CSCI 325 – Introduction to Parallel Systems and GPU Programming (Pre-req CSCI 332)

This course will provide an introduction to how to implement a large scale computations and data processing using parallel processing and distributed system organization. The areas that will be covered are: parallel computer architecture, shared-memory and message-passing approach, OpenMP, MPI, parallel computing applications, performance issues, GPU programming, CUDA, OpenCL , Clouds.

CSCI 330 - Mobile Computing (Pre-req CSCI 332)

This is a course on the foundations mobile and ubiquitous computing.  We will learn the fundamentals and acquire hands-on experience with mobile computing and sensors and actors of current mobile and wearable devices, like front and back camera, microphone, speaker, accelerometer, NFC, touchscreen, or external sensors. We will learn mobile application development and corresponding mobile GUI design. To extend the computational abilities and connectivity, we will develop and deploy simple cloud services. We will further study human computer interaction with a focus on touch-based interfaces, discuss and apply location based services, and analyze online payment systems. For the course projects, we will learn and apply agile programming concepts and development processes.   Open for non-majors.

CSCI 332 - Operating Systems (Pre-req CSCI 231)

The course describes the main components of modern computer operating systems, starting with the kernel and covers topics such as resource allocation, process scheduling, memory management, filing systems, management of input and output devices, distributed systems, multi-processor systems, synchronization, and the trend towards “virtualization”.

CSCI 333 – Computer Networks (Pre-req CSCI 152)

The course presents all layers of TCP/IP protocol stack, including HTTP, FTP, POP, SMTP, DNS, Peer-to-peer and Client/Server paradigms, Socket programming, TCP, UDP, Flow control, Congestion control, IP, Internet routing, Error control, Multiple access techniques, Ethernet, Wireless Networks, CSMA, CSMA/CA/CD. The course also includes topics on network security such as Public-key cryptography, Secret-key cryptography, Authentication protocols, SSL, and IPSec.

CSCI 336 – Ubiquity and Sensing (Pre-req CSCI 333)

This course will introduce students to the fundamentals of wireless sensor networking, from design to deployment.  The design of wireless sensor networks will be covered at all levels of abstraction from the physical layer up to the application layer.  Topics will include wireless signals and propagation, networking protocols, power management, data acquisition and processing, operating systems, and sensor modality and design.  The course will cover major industrial and healthcare applications as well as related topics in pervasive computing such as the Internet of Things. Students will balance the theory with practice, gaining hands-on experience through team-based projects.

CSCI 341 - Database Systems (Pre-req CSCI 152)

This is a first course in database management systems, with coverage of database design, architectures, data manipulation, relational algebra, normalization, query languages, and database integrity.  Emphasizes concepts and techniques related to the entity-relationship model and relational database systems with an introduction to object-relational storage and the use of relational databases in a client-server context.


CSCI 344 – Data Mining and Decision Support (Pre-req CSCI 341 and MATH 273)

Introduction to data-mining techniques, including data preprocessing, data-mining primitives, association rules, decision trees, cluster analysis, classification and machine learning, data visualization, and data warehousing. Detailed applications from a wide variety of domains are analyzed with attention toward algorithm selection.  

CSCI 361 - Software Engineering (Pre-req CSCI 152 and Third-year status)

Students will receive practical experience in the generation and analysis of various software artifacts as part of the software engineering process through hands-on, group-based projects.  Methods to effectively address software development in a team will be introduced and practiced. Each of the major steps of the development process, including specification, design, implementation, testing, and deployment will be covered in this course.  Students will be introduced to scenarios and their use in system specification. Object-oriented analysis basics of the use of UML for systems modeling will also be covered. Group projects will include requirements gathering, specification, and system design tasks, and the development of tests.

CSCI 390 – Artificial Intelligence (Pre-req CSCI 152)

This course will introduce the basic principles in artificial intelligence. Students will learn simple representation schemes, problem solving paradigms, constraint propagation, and search strategies. Students will study areas of AI application such as knowledge representation, natural language processing, expert systems, vision and robotics. Upon completion, students should be able to develop intelligent systems, understand the role of knowledge representation, problem solving, and learning in intelligent-system engineering, and appreciate the role of problem solving, vision, and language in understanding human intelligence from a computational perspective.

CSCI 392 – Intelligent Systems (Pre-req CSCI 390)

This course focuses on the application of computer intelligence methodologies and techniques, covering topics such as rule-based systems, fuzzy logic, artificial neural networks, evolutionary algorithms, knowledge engineering, ontologies, and hybrid systems.  Throughout the semester, students will be applying these techniques to real-world problems, and are expected to develop a final project for the course.

CSCI 399 – Internship II (Pre-req Fourth-year status, Variable credit)

Students can enroll for credit ranging from 1 to 3 credits, provided that the internship meets NU criteria, that a faculty member consents to serve as advisor, and that the student has completed a minimum of 90 credits prior to the start date of the internship.

CSCI 408 – Senior Project I (Pre-req Fourth-year status and major in CS)
Senior Project I is the first of a two-course sequence that serves as the capstone for CS majors, incorporating theory and practice from the preceding three years of coursework and internship experience.  In particular, the experience of the Computer Science Seminar course exposed students to literature search and techniques required to research and author a survey paper in the field, according to professional guidelines.  Following from this, the first term of the Senior Project requires the student to work (either alone or in small teams) with a faculty advisor to conduct a literature search, devise a project plan, and design the solution strategy.  This will form the foundation for the actual implementation of the project in the following semester.
CSCI 409 - Senior Project II (Pre-req CSCI 408)

Senior Project II is the second of a two-course sequence that serves as the capstone for CS majors, incorporating theory and practice from the preceding three years of coursework and internship experience.  In the previous term, students in Senior Project I will have developed a project plan and solution design under the advisement of a faculty member. Senior Project II is dedicated to the actual implementation of the project, and to demonstrate technical competence and proof-of-concept.  This two-course sequence should help prepare students for the experience of graduate work and employment as professionals in the field.

CSCI 434 - Information Security (Co-req CSCI 333)

The course provides a broad overview of the fundamentals of information security, from user authentication to data transmission and storage, encryption, access controls and confidentiality, handling of sensitive or controlled information, operational and physical security, vulnerability assessment, security policy issues and their relation to risk assessment, security incident detection and response, and the rudiments of cyber forensics.

CSCI 445 - Bioinformatics (Pre-reqs CSCI 152 and MATH 251)

This course covers computational techniques for mining the large amount of information produced by recent advances in biology, such as genome sequencing and microarray technologies.  Main topics of the course include: DNA and protein sequence alignment, phylogenetic trees, protein structure prediction, motif finding, microarray data analysis, gene/protein networks.

CSCI 447 - Machine Learning: Theory and Practice (Pre-reqs MATH 273 & MATH 321)

During this course students will be introduced to a variety of machine learning algorithms and techniques. Particular emphasis will be placed on understanding the theoretical basis. By the end of the course, students will be able to derive most commonly used methods mathematically from first principles and therefore have a firm grasp of the underlying theory. In addition, students will also be asked to implement various machine learning techniques from scratch in python during coding tutorials and thus also learn practical applications of the theoretical concepts.

CSCI 455 - Scripting Languages (Pre-req CSCI 253)

In this course, students will learn several scripting languages and how to use them to areas such as web programming, data extraction, system integration, and rapid prototyping.  They will also learn about how language concepts such as dynamic typing and scoping apply to scripting languages, and what makes them different from languages from other paradigms.  Through assignments, students will gain a better understanding of how to effectively apply scripting, and the strengths and weaknesses of the different languages covered.

CSCI 462 - Open Source Software (Pre-req CSCI 361)

The course will start with the history of Open Source Software (OSS), the organization of OSS communities, the OSS production process and business models as well as its adoption, reuse and impact. As the central part of the course, each student will explore a number of active OSS projects, and take part in one.

CSCI 471 - Complexity and Computability (Pre-req MATH 251)

The course covers the design and analysis of algorithms, and investigates the practical and theoretical limits of computing. We will investigate classic algorithmic approaches to solve computational problems, and the use of asymptotic analysis to quantify their efficiency. In addition, we will discuss the concepts of computational intractability, NP-completeness, Turing machines and computability.

CSCI 490 – Brain Computer Interface (Pre-reqs MATH 273 and MATH 321)

During this course students will learn about the most important topics of Brain Computer Interfaces (BCI). Students will study basic neuroanatomy, neurophysiology as well as the neural basis of Electroencephalography (EEG). Event-Related Potentials (ERP), multi-variate ERP models as well as linear models of EEG will be introduced. Furthermore, some common data analytical tools will be covered, such as PCA, NCC, LDA/RLDA. Also, ERP as well as SMR-based BCI applications and SSVEP-based BCI will be introduced. At the end of the course, students will carry out a small project.

CSCI 494 – Deep Learning (Pre-req CSCI 390 and MATH 273)

This course is a one semester course intended for students majoring in Computer Science. It introduces the students to the fundamental concepts of deep learning. The main themes of the course are Benefits, properties and challenges of Deep Learning; Introduction to Machine Learning and Optimization; Challenges and Common Approaches; Logistics Regression; Gradient Descent; Perceptron Learning; Stochastic gradient descent; Multi-layer Perceptron; Non-linearity in ANNs; Representational Capacity; Bias-variance dilemma; Overfitting, generalization; Regularization; Convolutional neural networks; Restricted Boltzmann Machines; Deep Recurrent Networks and Sequence Learning; Applications to pattern recognition from video data, speech recognition and natural language processing. The students will learn how to design a deep learning architecture. The course also explores several common deep learning techniques and exposes the students in learning how to use deep learning in a very efficient manner. Students will gain experience through assignments, with an emphasis on proper deep learning practices with appropriate applications.