Difference between revisions of "Structure of the BS Degrees"

From IU
Jump to navigation Jump to search
Line 426: Line 426:
 
We provide throughout the document how each course is mapped to a main area and
 
We provide throughout the document how each course is mapped to a main area and
 
knowledge areas. We also provide the distribution of the knowledge areas in the first two
 
knowledge areas. We also provide the distribution of the knowledge areas in the first two
years, and in the three specialised streams.
+
years, and in the three specialized streams.
   
 
== Structure of the First Two Years of Instruction ==
 
== Structure of the First Two Years of Instruction ==
   
The primary objective of the first two-year curriculumis to provide a solid scientific and technical
+
The primary objective of the first two-year curriculum is to provide a solid scientific and technical
 
foundation for a career in Computer Science and Engineering, prior to the development
 
foundation for a career in Computer Science and Engineering, prior to the development
 
of specialized knowledge and skills, which occurs in the second two years of the curriculum.
 
of specialized knowledge and skills, which occurs in the second two years of the curriculum.
More especially, the aimof the first two years is to foster the following fundamental skills
+
More especially, the aim of the first two years is to foster the following fundamental skills
 
and knowledge:
 
and knowledge:
   
Line 447: Line 447:
   
 
To this end, the curriculum emphasizes building mathematical foundations and covers
 
To this end, the curriculum emphasizes building mathematical foundations and covers
diverse math subjects—Mathematical Analysis, Differential Equations, Analytic Geometry
+
diverse math subjects—Mathematical Analysis, Differential Equations, Analytic Geometry, and Linear Algebra, Discrete Math, and Probability and Statistics. With strong math skills, students will be able to grasp any advanced subjects in their interest domain of information
and Linear Algebra, Discrete Math, and Probability and Statistics. With strong math skills, students will be able to grasp any advanced subjects in their interest domain of information
 
 
technology.
 
technology.
 
The curriculum also provides basic subjects on Physics and Electronics. Knowledge of
 
The curriculum also provides basic subjects on Physics and Electronics. Knowledge of
 
these subjects will be essential in pursuing further study in Robotics, and other areas of
 
these subjects will be essential in pursuing further study in Robotics, and other areas of
information technology such as Cyber-Physical Systems, and Internet of Things.
+
information technology such as Cyber-Physical Systems, and the Internet of Things.
 
Specifically, the students during the first year (Table 6.3) take courses on the most fundamental
 
Specifically, the students during the first year (Table 6.3) take courses on the most fundamental
 
computer science/engineering subjects (Introduction to Programming I/II, Data
 
computer science/engineering subjects (Introduction to Programming I/II, Data
 
Structures and Algorithms, Computer Architecture), math (Mathematical Analysis I/II, Analytic
 
Structures and Algorithms, Computer Architecture), math (Mathematical Analysis I/II, Analytic
Geometry and Linear Algebra I/II, DiscreteMath, Probability and Statistics), and physics
+
Geometry and Linear Algebra I/II, DiscreteMath, Probability, and Statistics), and physics
(Physics I). They are the languages of information technology, and will be the fundamental
+
(Physics I). They are the languages of information technology and will be the fundamental
 
foundation when students pursue their specialized streams in their last two years of the
 
foundation when students pursue their specialized streams in their last two years of the
 
program.
 
program.
 
During the second year (Table 6.4), students take essential computer science/engineering
 
During the second year (Table 6.4), students take essential computer science/engineering
courses such as DataModeling and Databases I/II, Operating Systems, Software Project, Networks,
+
courses such as data modeling and Databases I/II, Operating Systems, Software Project, Networks,
 
and Theoretical Computer Science. Also, Introduction to AI is, given its importance,
 
and Theoretical Computer Science. Also, Introduction to AI is, given its importance,
 
taken by all students. As in the first year, students also take courses on math (Differential
 
taken by all students. As in the first year, students also take courses on math (Differential
Line 468: Line 467:
 
Last but not least, internship (Internship I/II) is a core part of the curriculum throughout
 
Last but not least, internship (Internship I/II) is a core part of the curriculum throughout
 
the first two years. Students should complete their internship every summer.
 
the first two years. Students should complete their internship every summer.
  +
  +
  +
== Overview of the Second Two Years of Instruction ==
  +
  +
Equipped with fundamental competencies in math, engineering, and computer science
  +
in the first two years of the BS program, the students enter the third and the fourth year where they are trained on four different career paths having the fastest-growing employment
  +
opportunities in the world. The four streams are:
  +
• Software engineering,
  +
• Data science,
  +
• Robotics,
  +
• Security-Blockchain
  +
The Software Engineering Streamcombines system theory, computer science, and software
  +
engineering for students interested in pursuing careers in software engineering. The Data Science Stream integrates intelligent systems, computer science, and data science to
  +
produce graduates with the skills needed to evaluate and interpret big data. The Robotics
  +
Stream is aimed at giving fundamental knowledge in mechanics, mechatronics, electrical
  +
engineering, control theory, and robotics to provide students an understanding of the basic
  +
principles of robotic systems in particular and technical systems in general. Finally, the
  +
Security-Blockchain stream focuses on information security, relating to the design and development
  +
of secure computer software, providing in-depth handling of the current landscape
  +
of vulnerabilities, risks, and security disciplines. Alongside computer security, the stream
  +
also covers aspects related to distributed ledgers technologies (e.g., cryptocurrencies and
  +
blockchain technologies).
  +
Students take core courses through the third and fourth years, some of which belong
  +
to individual streams while others are shared. They also take one-five electives, one in
  +
the second semester of the third year and others in the fourth year. Students also need to
  +
complete a project in the third year. During the fourth year, students need to complete their
  +
theses supervised by Innopolis University faculty.
  +
  +
  +
= SOFTWARE ENGINEERING STREAM =
  +
  +
== Specific Educational Goals of the Program ==
  +
  +
The Software Engineering Stream is designed for students interested in pursuing careers
  +
in software engineering. The Software Engineering Stream mainly consists of courses that
  +
provide students with a core background in designing, building, validating, and maintaining
  +
complex software systems. As machine learning is becoming one of the core competencies
  +
required for software engineers, courses relevant to that topic are also provided to students
  +
in the Software Engineering Stream.
  +
Learning Outcomes: A student completing the Software Engineering Stream will be able to:
  +
  +
* Solve difficult computer systems problems in a creative and innovative way.
  +
* Design a system, or a component of it, in order to meet the desired needs within realistic
  +
economic and environmental constraints.
  +
* Understand the importance of componentization and reuse.
  +
* Use models, techniques, and technologies available to cover all the phases of software
  +
development, from requirements elicitation to design implementation, and testing.
  +
* Apply established and innovative service-based software architecture paradigms and
  +
design patterns to software development.
  +
* Take advantage of the most recent software verification techniques and tools, such as
  +
model checking and various static analysis techniques.
  +
* Apply the principles of syntactic and semantic analysis in compilers.
  +
* Distinguish among the various existing models for software processes, both traditional
  +
and agile, and be able to identify, customize, and apply the most suitable depending on
  +
circumstances.
  +
* Work both individually and as a team member in order to develop and deliver software
  +
artifacts of high quality.
  +
* Develop communication skills, negotiation skills, work ethic and discipline, and leadership.
  +
* Learn how to support and advance professional and organizational goals.
  +
  +
== Key Competences and Practices ==
  +
  +
The graduates of the Software Engineering Stream will have the following competencies after
  +
successful completion of the course of studies.
  +
  +
1. Software development methodologies
  +
  +
2. Software Design Methodologies and
  +
Tools
  +
  +
3. Requirements Engineering
  +
  +
4. Systems Specification Techniques
  +
  +
5. TestingMethodologies
  +
  +
6. Software Architecture
  +
  +
7. Design Patterns
  +
  +
8. Compilers Construction
  +
  +
9. Static Analysis
  +
  +
10. Model Checking
  +
  +
11. Concurrency Theory
  +
  +
12. Design-by Contract
  +
  +
13. AgileMethods
  +
  +
14. Programming Paradigms
  +
  +
15. Component-Based Development
  +
  +
16. Service-Based Systems
  +
  +
17. SoftwareMetrics
  +
  +
18. Programming Relational and NoSQL DB
  +
  +
19. User Interface Design
  +
  +
20. Code Quality
  +
  +
21. Analysis
  +
  +
22. Presentation
  +
  +
23. Communication
  +
  +
24. Technical Writing
  +
  +
25. Technical Reading
  +
  +
26. Problem Solving
  +
  +
27. Focus on User or Customer Needs
  +
  +
28. Cost/Benefit Analysis
  +
  +
29. Teamwork
  +
  +
30. Leadership
  +
  +
== Structure of the Two Years of Specialization ==
  +
  +
During the third and fourth years of this stream, the students take a set of core courses for
  +
the Software Engineering Stream.
  +
  +
Students also take electives courses in these years, starting from the Spring semester of
  +
the third year. While students can choose any electives they want from various available
  +
courses, at least one of the three electives must be about a technical subject, and another
  +
about soft-skill, humanities, or economics/marketing/finance.
  +
In addition, one of the electives that students can choose is a Software Engineering project
  +
  +
  +
====Third Year: SE Stream (Fall Semester):====
  +
  +
{| class="wikitable" style="text-align:center;"
  +
|- style="font-weight:bold;"
  +
! Course Name
  +
! Main Area
  +
! Knowledge Area
  +
! Teaching Structure
  +
|-
  +
| style="text-align:left;" | Information Theory
  +
| CSE
  +
| IS, GV
  +
| 2Lc-2Lab-2IL
  +
|-
  +
| style="text-align:left;" | Software Architecture
  +
| CSE
  +
| SE
  +
| 2Lc-2Lab-2IL
  +
|-
  +
| style="text-align:left;" | Compilers Construction
  +
| CSE
  +
| PL, AL
  +
| 2Lc-2Lab-2IL
  +
|-
  +
| style="text-align:left;" | Introduction to Machine Learning
  +
| CSE
  +
| IS
  +
| 2Lc-4IL
  +
|-
  +
| style="text-align:left;" | Distributed Systems & Cloud Computing
  +
| CSE
  +
| PD
  +
| 2Lc-2Lab-2IL
  +
|-
  +
| style="text-align:left;" | Philosophy II (Languages and Perceptions)
  +
| H
  +
| Ph
  +
| 2Lc-4IL
  +
|}

Revision as of 10:20, 10 September 2021

SUMMARY OF THE BS DEGREES

The Bachelor of Science in Computer Science and the Bachelor of Science in Computer Engineering at Innopolis University aim at creating professional software engineers, data scientists, robotics engineers, security & blockchain experts, and junior scientistswho possess a deep understanding of fundamental theoretical and practical results of computer science and engineering, are able to handle the fundamental mathematical abstractions to elaborate data, can use modern tools, languages and technologies, and can understand the underlying human, social and industrial aspects of information technology.

Moreover, a person with a Bachelor of Science in Computer Science or a Bachelor of Science in Computer Engineering acquired at Innopolis University should be eminently qualified to enter the IT job market in Russia in the position of junior software developer, software engineer, robotics engineer, data scientist, or equivalent.

The primary target of these graduates is the industry of the city of Innopolis. Therefore, the the program foresees many opportunities for synergies with these companies and businesses in Innopolis and the curricula reflect these industry-university synergies, leveraging substantial benefit for both parties.

Both the Bachelor of Science in Computer Science and the Bachelor of Science in Computer Engineering at Innopolis University are organized in 4 years of instruction performed mostly in English.

The first 2 years contain the fundamental courses in mathematics and physics, and in computer science and engineering. Students have the option of selecting one of two tracks: (a) Computer Engineering, (b) Computer Science.

The major goal of such an approach is to distinguish the difference in paths that consider students' career goals. For instance, if a student is looking to work in cybersecurity or as a systems administrator, computer science may be a good fit for him/her. If his/her goal is to eventually become a software architect or developer, a degree in computer science or computer engineering will equip him/her for the job. Advanced computer science curricula thoroughly cover how networks and systems security protocols work while teaching programming and appropriate mathematical concepts. Computer scientists typically have an understanding of:

  • programming languages;
  • how to run, maintain, and fix operating systems;
  • data structures and algorithms;
  • basic cybersecurity and cryptography;
  • knowledge of designing, coding, and testing software;
  • how computer networks work and how to manage them.

Some common skills a computer engineer utilize include:

  • A complete understanding of how computer hardware and architecture work;
  • knowledge of designing, coding, and testing software;
  • flexibility to work with a wide range of software, which can be highly specialized depending

on the company and/or industry;

  • ability to build your own PC systems and repair/maintain device drivers.

At the moment there is no special selection procedure for each track. Students pick the program by their own on the basis of the knowledge obtained in Higher School. In the next 2 years the students have the option of selecting one of the four streams: (a) Software Engineering, (b) Data Science, (c) Robotics, and (d) Security-Blockchain.

To provide a solid grounding for the application of the studies, there is an internship at the end of every year. This can be performed in a software company located in the city of Innopolis, or also, if such option is not practical, in a company located elsewhere in Russia, in the university labs or administration, or in another suitable institution.

The curriculum also attaches significant importance to instruction in the humanities (history and philosophy), focusing on the aspects most relevant to ICT. At the end of each degree, students write theses, and to write theses effectively, they take a course on Academic Research and Writing Culture. This thesis reflects the highest standards of university education and can also be developed in collaboration with a company.

INTRODUCTION

Premises

The Bachelor of Science in Computer Science and Engineering at Innopolis University aims at providing its students with a quality undergraduate education in both the theoretical and applied foundations of computer science. The goal is to train students through comprehensive educational programs, and research in collaboration with industry and government, to effectively apply this education to solve real-world problems and enhance graduates’ potential for high-quality lifelong careers.

The Bachelor of Science in Computer Science and Engineering at Innopolis University is organized in 4 years of instruction performed mostly in English and comprises over 240 ECTS (Europe Credit Transfer and Accumulation System).

Overall, a student takes 45 courses. The yearly course distribution (the number of core and elective courses) is the same for Software Engineering, Data Science, and Security-Blockchain streams, but it is slightly different for the Robotics stream.

Distribution of the core and elective courses in Software Engineering, Data Science, a Security-Blockchain streams:

Year Core Elective
First 12 0
Second 12 0
Third 10 1
Fourth 6 4
Total 40 5

Distribution of the core and elective courses in Robotics stream:

Year Core Elective
First 12 0
Second 12 0
Third 11 0
Fourth 8 2
Total 43 2

Distribution of the credits for internships and theses:

Year Credit
First 14
Second 10
Third 10
Fourth 24
Total 58

The first 2 years (120 credits) contain the fundamental courses in mathematics and physics, and in computer science and engineering. The body of knowledge in these years consists ofMath, Physics, Algorithms and Complexity, Programming Languages, Software Development Fundamentals, Architecture and organization, Operating Systems, Computational Science, information management, and Networking and Communications.

In the next 2 years (120 credits) the students have the option of selecting one of the four streams: (a) Software Engineering, (b) Data Science, (c) Robotics, and (d) Security-Blockchain. The body of knowledge in these years mainly consists of Graphics and Visualization, Information Assurance and Security, Intelligent Systems, Parallel, and Distributed Computing, Software Engineering, Systems Fundamentals, Human-Computer Interaction, Finance, Mechanical Engineering, Electrical Engineering, Mathematical Physics, Robotics, and Control Engineering.

The curriculum also attaches significant importance to instruction in the humanities (history and philosophy), focusing on the aspects most relevant to ICT. Finally, life and safety, and sport complete the educational program with 10 credits.


Organization of the information about the BS Degree

The information about the BS Degree is organized as follows. Chapter 5 on page 33 describes the overall structure of the degree in terms of the distribution of credits and courses. Chapter 6 on page 36 outlines the main educational goals of the degree and the structures of the various courses of instruction. Then there are four chapters discussing the fourth stream: Chapter 7on page 47 for Software Engineering, Chapter 8 on page 52 for Data Science, Chapter 9 on page 57 for Robotics, and Chapter 10on page 60 for Security-Blockchain. Eventually, Chapter 11 on page 64 presents in depth the core courses taught in the degree and Chapter 12 on page 66 summarises the electives. In Appendix ?? on page ?? there is a graph summarising the overall curriculumand the dependencies between core courses, then in Appendix A on page 9 there is the description of the multidisciplinary exam, Appendix B on page 11 contains the procedures to elaborate and defend the thesis. Appendix C on page 22 contains the key competences acquired during the first two years of instruction while Appendix D on page 24 details the knowledge areas covered by each of the streams. Finally, Appendix E on page 28 list the main tools, technologies and programming languages introduced in the degree and Appendix F on page 30 specifies the specific courses of the direction of finance technologies.

STRUCTURE OF THE DEGREE

Credits

Overall, the degree requires the student to acquire 240 credits organized over 4 years of study, with a pace of 60 credits per year. One credit of study approximately corresponds to 36 academic hours of effort per student, which can be organized differently depending on the course, as detailed further in Section 14.4. This means that a course of 4 credits requires an effort of 144 hours,1 and an internship of 8 credits requires 288 hours (about 7 weeks).

Organization of the Courses of Instruction

Courses can be organized in a variety of ways, taking advantage of various teaching mechanisms, such as:

Lc: Class Lecture; Tut: Class Tutorial,where the instructor explains concepts guiding students through practical exercises;

Lab: Group Laboratory, where the students perform homework and/or exercises and/or projects coordinated by the instructor, asking help from the instructor as needed, and receiving if needed also additional material directly from the instructor.

IL: Individual Labs, where the students perform exercises and refer to the instructor in person or via electronic media to get support in case of need. During the first two years of instruction:

  • Math and science courses have the structure of 2Lc-2Lab-2IL, meaning 2 academic

hours per week of class lectures, 2 academic hours of labs, and 2 academic hours of individual labs;

  • Computer science and engineering courses have the structure of 2Lc-2Tut-2Lab, meaning

2 academic hours per week of class lectures, 2 academic hours of class tutorials, and 2 academic hours of labs.

The technical courses have the structure of 2Lc-2Lab-2IL meaning 2 academic hours per week of class lectures, 2 academic hours of labs, and 2 academic hours of individual labs. The courses in humanities have the structure of 2Lc-4IL.

Internships

Every year the students have a mandatory internship during the summer break. There are three types of internships:

  • Industrial – students work in Innopolis University partner IT companies, primarily

located within the city of Innopolis

  • Scientific – students work in Innopolis University labs on ongoing research and development

tasks

  • Administrative – students work in different Innopolis University departments on IT

analysis, design, and implementation projects.

It is also possible to have internships that combine these three types. The internship usually starts once the exam session for the spring semester is completed.

Knowledge of English

A graduate fromthe program is expected to know English at least at the level of IELTS 7. To achieve this goal, Innopolis University takes the following steps:2

  • At admission at the university, the student must have a knowledge of English at least at

level of IELTS 5.

  • At the end of the first year of instruction, the student must have a knowledge of English

equivalent to at least the level 5.5 of IELTS.

  • English equivalent to at least the level 6 of IELTS.
  • At the end of the third year of instruction, the student must have a knowledge of English

equivalent to at least the level 6.5 of IELTS.

  • At the end of the fouth year of instruction, the studentmust have a knowledge of English

equivalent to at least the level 7 of IELTS.

The university will make available to the student the fundamental resources to achieve the required levels. However, it is the responsibility of the student to achieve them, taking advantage of resources provided by the university and others.

Multidisciplinary Exam

At the end of the second year of study, the student has to pass amultidisciplinary examaimed at evaluating their comprehensive understanding of the discipline beyond the borders of an individual subject. This ensures that students who progress to years three and four have the ability to engage in system-oriented thinking and have the capacity to solve broadly-based IT problems.

Number of Admitted Students

The number of admitted students is defined by the Department of Education based on the requests of the senior university administration and of the university stakeholders.


MAIN EDUCATIONAL AIMS AND STRUCTURES

Overall Educational Goals

Innopolis University aims to prepare its students for working in various IT-related professions as software engineers, data scientists, robotics engineers, and junior scientists, to name a few. A graduate of Innopolis University should be highly qualified to enter the IT job market in Russia in the position of Junior Software Engineer or its equivalent and to be immediately productive.

A graduate of Innopolis University is able to:

1. Understand the fundamental theoretical concepts and practical results of computer science and engineering,

2. Use programming languages and other representative tools for information technology, with a firmunderstanding of the mathematical abstraction behind these technologies, and

3. Appreciate the underlying human, social and industrial aspects of information technology. Innopolis University aims to create a vibrant international environment for learning. For this reason, the primary language of education at Innopolis University is English. Innopolis University also aims to prepare its students for the constantly evolving world of information technology. A graduate of Innopolis University possesses not only IT skills but also various essential soft skills such as self-reliance, team-work, and time management. To facilitate interaction with local and global industry, different means of delivery of the individual courses and of whole degrees are deployed, e.g., problem-based teaching, flipped classrooms, and inverted syllabi. Innopolis University attracts top students in Russia and worldwide.

Organization of Studies

The curriculum spans four years. First and second-year students can choose one of the following tracks:

  • Computer Engineering
  • Computer Science

Despite their choice students take fundamental courses in Engineering, Mathematics and Computer Science in each semester but in different depths of studying. Each track contains the same set of core courses, but the courses that are taught in different level of depth have different titles, e.g. Calculus-I vsMathematical Analysis-I, Analytical Geometry - I vs Essentials of Analytical Geometry-I, Programming Software Systems-I vs Introduction to Programming-I.

Also, these tracks have a set of courses with lectures that are taught for all the students simultaneously but with different approaches to practical classes, e.g. Computer Architecture (Fundamentals of Computer Architecture) and DiscreteMath, Philosophy(Logic). The computer science track focuses on topics in computational theory. These include the virtual aspects of computers, focusing on software, rather than hardware. As a field that is closely aligned with mathematics, computer science applies theoretical ideas to solve real world problems. Computer science degree programs require courses including analysis of algorithms, operating system principles, computer architecture and software engineering, so an interest in math, puzzles, and problem-solving would suit a student well. A degree in computer science will cover essential hardware and software topics, including computer organization and architecture. Computer science is often described as more abstract and less hands-on than computer engineering. As a computer scientist, students will focus on using computational theory, mathematics and data structures to write effective codes. Computer engineering track focuses on how to build devices including robots. It is a field that combines physics, electrical engineering and computer science. The focus of computer engineering is on hardware, rather than software and it’s closer to Robotics rather than to Software Development.

The work of a computer engineer works in the physical world and involves understanding howwe can harness the laws of physics and electronics to create better computer components. They aremore likely to spendmore time at a lab bench than writing code. Fromthis point of view computer engineering is often described as more practical activity than computer engineering. Learning the same subjects students will bemore focused on the applications of the theory for solving real life problems. Third and fourth-year students can choose one of the following streams:

  • Software engineering
  • Data science
  • Robotics
  • Security-Blockchain

Each stream has its own set of specific courses, as well as those that are shared with other streams. Moreover, the stream in data science has a direction in finance technologies, specializing data science for the banking and financial industry. The organization of the courses is as detailed in Tables 14.2 and 4.2. In addition to them there are courses for sport in every semester. Furthermore, students of each stream do a project in the spring semester of the third year, and a thesis in both semesters of the final (fourth) year.

Each of the taught courses (core and electives) and the thesis course done during the semester count for 4 credits. The sport courses count for one credit each. The Life Safety course counts for 2 credits. The summer internship counts for 14 credits in the first year, 10 credits in the second and third years, and 8 credits in the fourth year.

Main Areas and Knowledge Areas

To effectively design the curriculum, we identify areas that must be covered in the curriculum. We distinguish the following two kinds of areas, i.e., main areas and knowledge areas. First, the main areas are the key components of the degree program listed as follows:

  • (CSE) Computer Science and Engineering
  • (M)Math
  • (P) Physics
  • (H) Humanities
  • (M-CS)Math and Computer Science
  • (IT) Internship and Theses

Meanwhile, the knowledge areas shown in the following list identify more specifically the body of knowledge that must be covered in the curriculum.

  • (IS) Intelligent Systems
  • (GV) Graphics and Visualization
  • (PL) Programming Languages
  • (PD) Parallel and Distributed Programming
  • (SDF) Software Development Fundamentals
  • (SE) Software Engineering
  • (EE) Electrical Engineering
  • (CE) Control Engineering
  • (OS) Operating Systems
  • (CN) Computational Science
  • (MP)Mathematical Physics
  • (Ph) Philosophy
  • (Hs) History
  • (FN) Finance
  • (ME)Mechanical Engineering
  • (AL) Algorithms and Complexity
  • (HCI) Human Computer Interaction
  • (BE) Bio-engineering
  • (SP) Social Issues and Professional Practice
  • (CM) Communications
  • (AO) Architecture and Organization
  • (SP) Social Issues and Professional Practice

We identified the knowledge areas based on the CurriculumGuidelines for undergraduate Degree Programs in Computer Science by the joint task force between ACM(Association for ComputingMachinery) and IEEE Computer Society in 2013.1 Note that a knowledge area is a higher-level concept than a course and an individual course can cover diverse knowledge areas when appropriate.

We provide throughout the document how each course is mapped to a main area and knowledge areas. We also provide the distribution of the knowledge areas in the first two years, and in the three specialized streams.

Structure of the First Two Years of Instruction

The primary objective of the first two-year curriculum is to provide a solid scientific and technical foundation for a career in Computer Science and Engineering, prior to the development of specialized knowledge and skills, which occurs in the second two years of the curriculum. More especially, the aim of the first two years is to foster the following fundamental skills and knowledge:

  • Ability to develop computer programs and systems efficiently. Related courses are

Introduction to Programming and Software Project where the former focuses on improving the programming skills of students, while the latter also involves other diverse software development activities such as software design and maintenance.

  • Ability to solve problems efficiently using computer programs. Related courses are

Data Structures and Algorithms, and Introduction to AI.

  • Ability to understand the theory and concept of computer systems. Related courses are

Computer Architecture, DataModeling and Databases, Operating Systems, Networks, and Theoretical Computer Science.

To this end, the curriculum emphasizes building mathematical foundations and covers diverse math subjects—Mathematical Analysis, Differential Equations, Analytic Geometry, and Linear Algebra, Discrete Math, and Probability and Statistics. With strong math skills, students will be able to grasp any advanced subjects in their interest domain of information technology. The curriculum also provides basic subjects on Physics and Electronics. Knowledge of these subjects will be essential in pursuing further study in Robotics, and other areas of information technology such as Cyber-Physical Systems, and the Internet of Things. Specifically, the students during the first year (Table 6.3) take courses on the most fundamental computer science/engineering subjects (Introduction to Programming I/II, Data Structures and Algorithms, Computer Architecture), math (Mathematical Analysis I/II, Analytic Geometry and Linear Algebra I/II, DiscreteMath, Probability, and Statistics), and physics (Physics I). They are the languages of information technology and will be the fundamental foundation when students pursue their specialized streams in their last two years of the program. During the second year (Table 6.4), students take essential computer science/engineering courses such as data modeling and Databases I/II, Operating Systems, Software Project, Networks, and Theoretical Computer Science. Also, Introduction to AI is, given its importance, taken by all students. As in the first year, students also take courses on math (Differential Equations, Stochastic Processes). Lastly, students also take a fundamental course on electronics (Physics II) in the second year. Last but not least, internship (Internship I/II) is a core part of the curriculum throughout the first two years. Students should complete their internship every summer.


Overview of the Second Two Years of Instruction

Equipped with fundamental competencies in math, engineering, and computer science in the first two years of the BS program, the students enter the third and the fourth year where they are trained on four different career paths having the fastest-growing employment opportunities in the world. The four streams are: • Software engineering, • Data science, • Robotics, • Security-Blockchain The Software Engineering Streamcombines system theory, computer science, and software engineering for students interested in pursuing careers in software engineering. The Data Science Stream integrates intelligent systems, computer science, and data science to produce graduates with the skills needed to evaluate and interpret big data. The Robotics Stream is aimed at giving fundamental knowledge in mechanics, mechatronics, electrical engineering, control theory, and robotics to provide students an understanding of the basic principles of robotic systems in particular and technical systems in general. Finally, the Security-Blockchain stream focuses on information security, relating to the design and development of secure computer software, providing in-depth handling of the current landscape of vulnerabilities, risks, and security disciplines. Alongside computer security, the stream also covers aspects related to distributed ledgers technologies (e.g., cryptocurrencies and blockchain technologies). Students take core courses through the third and fourth years, some of which belong to individual streams while others are shared. They also take one-five electives, one in the second semester of the third year and others in the fourth year. Students also need to complete a project in the third year. During the fourth year, students need to complete their theses supervised by Innopolis University faculty.


SOFTWARE ENGINEERING STREAM

Specific Educational Goals of the Program

The Software Engineering Stream is designed for students interested in pursuing careers in software engineering. The Software Engineering Stream mainly consists of courses that provide students with a core background in designing, building, validating, and maintaining complex software systems. As machine learning is becoming one of the core competencies required for software engineers, courses relevant to that topic are also provided to students in the Software Engineering Stream. Learning Outcomes: A student completing the Software Engineering Stream will be able to:

  • Solve difficult computer systems problems in a creative and innovative way.
  • Design a system, or a component of it, in order to meet the desired needs within realistic

economic and environmental constraints.

  • Understand the importance of componentization and reuse.
  • Use models, techniques, and technologies available to cover all the phases of software

development, from requirements elicitation to design implementation, and testing.

  • Apply established and innovative service-based software architecture paradigms and

design patterns to software development.

  • Take advantage of the most recent software verification techniques and tools, such as

model checking and various static analysis techniques.

  • Apply the principles of syntactic and semantic analysis in compilers.
  • Distinguish among the various existing models for software processes, both traditional

and agile, and be able to identify, customize, and apply the most suitable depending on circumstances.

  • Work both individually and as a team member in order to develop and deliver software

artifacts of high quality.

  • Develop communication skills, negotiation skills, work ethic and discipline, and leadership.
  • Learn how to support and advance professional and organizational goals.

Key Competences and Practices

The graduates of the Software Engineering Stream will have the following competencies after successful completion of the course of studies.

1. Software development methodologies

2. Software Design Methodologies and Tools

3. Requirements Engineering

4. Systems Specification Techniques

5. TestingMethodologies

6. Software Architecture

7. Design Patterns

8. Compilers Construction

9. Static Analysis

10. Model Checking

11. Concurrency Theory

12. Design-by Contract

13. AgileMethods

14. Programming Paradigms

15. Component-Based Development

16. Service-Based Systems

17. SoftwareMetrics

18. Programming Relational and NoSQL DB

19. User Interface Design

20. Code Quality

21. Analysis

22. Presentation

23. Communication

24. Technical Writing

25. Technical Reading

26. Problem Solving

27. Focus on User or Customer Needs

28. Cost/Benefit Analysis

29. Teamwork

30. Leadership

Structure of the Two Years of Specialization

During the third and fourth years of this stream, the students take a set of core courses for the Software Engineering Stream.

Students also take electives courses in these years, starting from the Spring semester of the third year. While students can choose any electives they want from various available courses, at least one of the three electives must be about a technical subject, and another about soft-skill, humanities, or economics/marketing/finance. In addition, one of the electives that students can choose is a Software Engineering project


Third Year: SE Stream (Fall Semester):

Course Name Main Area Knowledge Area Teaching Structure
Information Theory CSE IS, GV 2Lc-2Lab-2IL
Software Architecture CSE SE 2Lc-2Lab-2IL
Compilers Construction CSE PL, AL 2Lc-2Lab-2IL
Introduction to Machine Learning CSE IS 2Lc-4IL
Distributed Systems & Cloud Computing CSE PD 2Lc-2Lab-2IL
Philosophy II (Languages and Perceptions) H Ph 2Lc-4IL