Computer Science, BSc
Are you interested in technology and being part of an emerging regional industry? Do you want to develop skills and capabilities to face challenges of today's state of the art technology? Do you want to use software, hardware, and mathematics to enter the world of technology, start your own business or pursue study at a higher level? Do you want to learn about the emerging field of Computer Science in Central Asia, taught by experienced and renowned faculty? If so, UCA's Computer Science programme is for you.
UCA's Computer Science programme will not only develop you into a stellar programmer, but will equip you to be part of a new generation of knowledgeable and skilled information technology (IT) professionals ready to develop infrastructure and generate entrepreneurial opportunities in Central Asia.
UCA's Computer Science programme is designed in partnership with the University of Toronto, Canada.
Computer Science at UCA combines the mathematical building blocks of theoretical knowledge with applied programming skills. The concepts of hardware and computer architecture are provided in addition to advanced software topics to create a comprehensive preparation for students to enter the world of technology, start their own business, or pursue study at a higher level. Alongside the Computer Science course work, practical projects are assigned in various courses to provide the capability of dealing with unanticipated problems and to share their findings in refereed journals. Annual internships are another salient feature of the Computer Science curriculum.
Meet UCA's Computer Science Faculty
UCA's highly qualified international faculty have a depth and breadth of experience in both business and technology. Their experience is enabling students to develop innovative approaches to convert ideas into practice and in guiding students to levels of accomplishment beyond their perceived limitations.
- Artificial Intelligence
Data Structure and Algorithms
This course is an introduction to mathematical modeling of computational problems. It covers the common algorithms, algorithmic paradigms, and data structures used to solve these problems. The course emphasises the relationship between algorithms and programming and introduces basic performance measures and analysis techniques for these problems. Among the algorithms covered are common sorting algorithms such as insertion sort, and quicksort, techniques from number theory such as the spigot algorithm, divide and conquer algorithms such as the Fast Fourier Transform, in addition to a review of programming methods such as recursion.
- Digital Logic Design
- Computer Networks
- Web Technologies
- Operation Systems
Information Technology (Fundamentals of Programming)
This course aims to teach the Python programming language to students who have no previous knowledge about programming. It is designed as an introductory programming course and is also useful for those with prior programming experience looking to learn Python. Computer programming is a skill that is best learned through hands-on experience. This course introduces almost all Python programming language features, and then discusses many examples to illustrate how the feature can be used to solve different problems. As each a feature is presented, a complete programme example is provided to illustrate the feature. This reflects the overriding philosophy that has been used in designing this course: to teach by theory and practical examples. By doing so, not only will students learn the Python programming language and its syntax, but students will also become familiar with the process of typing in, compiling, and running Python programmes. This course is intended for anyone who is learning Python programming language for the first time. This course makes no assumptions about a particular computer system or operating system on which the Python language is implemented.
- Introduction to Computer Science
- Computer Architecture
- Data base Systems
- Programming Methodologies
- Software Engineering
- Compiler Design
- Automata Theory
- Android Application Design
- Computer Graphics
In this course, students choose a semester-long project that combines hardware and software, to build a device that combines sensing, computation, and control to achieve a complex task. The course begins with an introductory discussion about using the Arduino and/or Raspberry Pi controllers, combined with a variety of sensors. Students work in groups to build systems that solve a problem chosen by each student group.
This course aims to teach computer programming to the complete programming beginners using the C language. As such, it is assumed that students have no previous knowledge about programming. The main objective of this course is to teach fundamental programming principles using C, one of the most widely used programming languages in the world today. C is considered a ‘modern’ language even though its roots date back to the 1970s. Originally, C was designed for writing ‘systems’ programmes, operating systems, editors, compilers, assemblers and input/output utility programmes. Today, C is used for writing all kinds of application programmes for processing, spreadsheets, database management, accounting, as well as games, and educational software, among others. In this course, students will learn how to program in C language.
- Distributed Systems
- Image Processing
- Object Oriented Programming
* Courses are subject to change.
Elective courses are offered to students in line with the national requirements, and students can also choose free elective courses from another major.
You will acquire the following professional skills:
- Open, assemble, and analyse the performance of components of a computer system; knowledge of what each component does and how they fit together.
- Effective programming, data structures, and algorithm skills in one or more programming languages, including various techniques, analysis, and how to apply them to the creation, design, and processing of languages.
- Apply knowledge and practice of web development and design, together with the use of databases.
- Acquire machine learning and artificial Intelligence techniques.
- Demonstrate skills in linear algebra, differential and integral calculus, numerical methods, numerical algorithms, statistics and optimization, and apply them to the resolution of engineering problems using basic algorithmic procedures.
- Apply security principles and practices to the environment, hardware, software, and human aspects of a system, and evaluate the presence of risks and threats in computer systems.
Your minor complements your major area of study, enriching your skill set and knowledge base, making you an all-rounded candidate for any future employer. For example, if you are a Computer Science major and you minor in Development Studies, you can work in international development, offering both IT skills and an understanding of development in Central Asia.
- Software Development
- Computer Engineering
- Database and System Administration
- Information and Cybersecurity
- Web Development
- Computer Programming
- Social Media Management
- Multimedia Programming
- Research and Development
Key Educational Goals of Computer Science Programme
G1. The programme aims to providing students with the skills of widely educated, articulate, and knowledgeable computer scientists and software engineers for leadership and professional careers as well as for advanced study.
The programme produces highly qualified and motivated graduates through a rigorous curriculum of theoretical and applied knowledge that contributes to developing the ability to solve problems, individually, and in teams. The graduates of the programme will be also provided with interdisciplinary knowledge beyond the narrow disciplinary scope of computer science. As a result the graduates of the programme will be successful, ethical, and effective problem-solvers as well as life-long learners who will contribute positively to the economic well-being of the region and who are prepared to tackle complex 21st Century challenges. The graduates of the computer science programme of UCA are also supposed to develop deep awareness of their ethical responsibilities to their profession and wider society.
G2. The programme is oriented at producing innovative leaders in the fields of computer science and software engineering.
As drivers of innovation in the society, the graduates of the programme are supposed to be on the cutting edge of innovative software development, advanced research and dissemination of knowledge. In turn, at UCA the programme is implemented in the framework of an innovative research and teaching environment, which swiftly responds to the challenges of the 21st century. As such, the programme is expected to contribute greatly to the production of quality human resources needed for the fast development of the IT industry in Central Asia.
G3. Producing widely educated computer scientists and software engineers the programme aims at addressing the complex diverse nature of Central Asian societies.
In particular, the graduates of the programme will be able to become specialists in different areas of digital humanities, thus, contributing to the preservation and development of the rich cultural heritage of the region. Since various fields of the digital humanities such as machine translation, computer linguistics, data analysis, data visualization, textual mining, and cultural analytics are located today in the very vanguard of both computer applications and development of the humanities and social sciences, interdisciplinary educated computer science specialists are increasingly in high demand. The programme is aimed at producing such specialists and will contribute greatly to the preservation and development of the rich cultural heritage of central Asian societies.
Expected learning outcomes
General Computer Science Capabilities:
Apply mathematical foundations, algorithmic principles, and computer science theory in the modeling and design of computer-based systems in a way that demonstrates comprehension of the tradeoffs involved in design choices
Analyse a problem, and identify and define computing requirements appropriate to its solution
Deliver full software solutions of varying complexity including negotiating and documenting customer requirements, determining the overall design for a software system, implementing a fully specified system, evaluating a fully specified system, and monitoring project progress to ensure on-time delivery
Understand and appreciate the legal, social, security and ethical dimensions of computer technology, including ways in which computer technology raises ethical questions or moral dilemmas
Analyse the local and global impact of computing on individuals, organizations, and society
Communicate computer science-related concepts in written, oral, and graphical forms to technical and non-technical stakeholders
Contribute effectively as a member of, and lead, multi-disciplinary teams
Recognize the need for, and be able to engage in continuing professional development
Use current techniques, skills, and tools necessary for the practice of computer science
Content-Specific Computer Science Capabilities:
Analyse and assess the performance of algorithms and data structures used in in computer science applications
Apply concepts such as lists, stacks, queues, arrays, graphs, trees, heaps and hashing to create algorithms
Apply mathematical concepts including proofs, set theory, relations, functions, and combinatorics to model computational problems
Understand themes such as abstraction, complexity, and evolutionary change, and be able to apply principles of common resource, security, and concurrency
Write effective solutions using a variety of programming languages including object-oriented programming language, assembly language, functional programming language, and procedural programming language
Explain the hardware and software of computer systems including the interaction of computer processing units, elements of operating systems, and elements of networks
Understand and apply network management concepts including network topologies, configurations, routers, and switches
Manage IT-related projects across the spectrum of project management including requirements, specifications, project control, execution, cost management, and production deployment
A combination of different assessment methods are used to evaluate the performance of students in the Computer Science programme. Depending on the type of the course, they can be classified into two categories:
1. Formative Assessment
Faculty members assess student performance during instruction. This method usually occurs regularly throughout the instruction process, and seeks to improve the achievement of students’ learning objectives through approaches that can support specific student needs. Examples of formative assessment methods used in the Computer Science programme include:
- In-class discussions
- Clicker questions
- Low-stakes group work
- Weekly quizzes
- 1-minute reflection writing assignments
- Homework assignments
2. Summative Assessment
Faculty members evaluate students learning, knowledge, proficiency, or success at the conclusion of the instructional period. Summative assessments are almost always formally graded, and can be used in conjunction and alignment with formative assessments. Examples of summative assessment methods used in the Computer Science programme include:
- Instructor-created exams
- Standardised tests
- Final projects
- Final essays
- Final presentations
- Final reports