APPLICATIONS ARE OPEN! APPLY

Computer Science

Computer Science

Bachelor in Computer Science (180 ECTC, 3 academic years, full-time)
Professional profile

The purpose of the Bachelor of Study Program in Computer Science is to prepare experts capable of understanding and managing a variety of advanced technologies through which they improve and build systems and applications that help solve today’s problems by sharing skills and knowledge with the community in the field of informatics and information technology.

Formative objectives of the study program:

The Bachelor’s program in Computer Science prepares students to achieve the following career and professional achievements within a few years of graduation, preparing them to be able to:
➢ carry out a successful career in the disciplines of computer science and / or pursue postgraduate studies in this field;
➢ improve their knowledge and skills through lifelong learning and adaptation to emerging markets and technologies;
➢ take leadership positions in order to improve services in this field and also initiate businesses that offer innovative solutions;
➢ to act conscientiously about the potentials and responsibilities of the IT profession in the context of science, technology, society and humanity;

Employment opportunities

Given the spread and development of computer technology in society today, there are many different job opportunities for computer science graduates.
Some of the employment opportunities that the Bachelor in Computer Science program offers are
as follows:
➢ Analyst of software systems, makes it possible to control the flow of information;
➢ Software systems consultant, helps in information processing;
➢ Software engineer, system programmer;
➢ Database analyst, designs and creates programs to collect, store and analyze data from business, government or other institutions;
➢ Artificial intelligence programmer;
➢ Operator and manager of information systems;
➢ System and/or database administrator;
➢ Computer security specialist;
➢ Manager / IT consultant;
➢ Telecommunication specialist and network consultant;

CURRICULUM

Semester I
PhysicsPhysics is the science that studies the fundamental laws of the universe, focusing on matter, energy, and the interactions between them. In this course, Computer Science students acquire foundational knowledge in physics, covering essential topics such as motion, energy, forces, electricity, and more. Physics seeks to explain natural phenomena and is often referred to as a “fundamental science” because other fields, such as chemistry and biology, explore systems whose properties are governed by physical laws. For this reason, the course provides a solid foundation that supports the study of core Computer Science disciplines that will be developed in subsequent stages of the program.
Mathematical Analysis1Mathematical Analysis is one of the fundamental disciplines of mathematics, with both a formative and highly practical character. Beyond its numerous applications in practice, mastering its fundamental concepts is essential for all exact sciences. This need is even more evident today, as the development of computer science has reached exceptional levels, making mathematical proficiency increasingly important. Engineers and computer scientists, in particular, require a solid foundation in Mathematical Analysis. The mathematics curriculum is structured to provide a gradual progression of mathematical knowledge in response to the current demands of the field of computer science. Given the rapid development of computer science and its close relationship with mathematics, the course is designed to provide mathematical knowledge that supports this objective. The program aims to equip students with essential mathematical knowledge and practical application skills, while also enhancing their intuitive and analytical thinking abilities.
Web ProgrammingThis program aims to guide students toward best practices in web design and website development, covering all essential aspects of the process. Students will acquire foundational knowledge of World Wide Web technologies and gain a comprehensive understanding of how websites function. By learning the fundamentals of web design, including HTML, CSS, and JavaScript, students will develop a deeper understanding of website structure and functionality. In addition to technical skills, the course addresses important concepts such as usability, accessibility, privacy, and website security. Throughout the course, students will have opportunities to apply their knowledge through individual or group projects, using HTML, CSS, and JavaScript to create functional and interactive web pages. These acquired skills will be demonstrated through the projects completed independently or collaboratively.
Academic WritingAcademic Writing is a complementary course that provides students with foundational concepts and essential tools for independently producing scholarly work, including research articles and essays, structuring a research thesis, and effectively presenting academic work. The course emphasizes a clear understanding of academic writing methods and research methodologies, which are essential tools for research and innovation and contribute to the development of new knowledge or the refinement of existing knowledge. Students will learn the rules and guidelines required to conduct thorough academic research. The scientific research methodology component aims to equip students with the theoretical knowledge and practical techniques necessary for academic inquiry. It includes lectures and discussions on the various stages of the research process, such as topic selection, hypothesis formulation, collection of scientific material, text organization, academic discourse, and citation and referencing formats.
EnglishThis course is primarily seminar-based and is conducted entirely in English. It introduces the fundamentals of English as applied to the specific field of Computer Science. The course focuses on improving students’ English language proficiency by developing vocabulary, reading comprehension, and communication skills. Students apply their knowledge through reading activities, language analysis, and the processes of writing, reviewing, and editing in order to produce accurate texts with a clear communicative purpose. The course covers topics such as working with numbers, computer accessories, computer hardware and software, operating systems, and other areas relevant to Computer Science. By the end of the course, students have developed advanced English language and communication skills, enabling them to express themselves with greater fluency, accuracy, and confidence. They have also acquired new English terminology and concepts essential to their field of study. In addition, students have strengthened key skills such as writing, speaking, reading, oral presentation, and the ability to discuss and respond to the content of specific articles and materials.
Introduction to ProgrammingUpon successful completion of this course, students will be able to write and test simple Java applications using key programming elements such as variables, constants, arrays, conditional statements, loops, data input, and result output. They will be able to structure programs using reusable methods or functions. Students will also learn to describe the fundamental principles of object-oriented programming and apply them to project design, effectively use class inheritance and polymorphism, and develop applications composed of multiple classes. In addition, they will acquire skills in producing clear documentation and following clean coding practices. The course is divided into two main components: lectures, where students learn how to design, test, and document programs, and seminars, where they apply their knowledge through practical programming activities in a working environment that complements the theoretical material covered in the lectures.
Semester II
Mathematical AnalysisMathematical Analysis 2, as a continuation of Mathematical Analysis 1, is one of the fundamental disciplines of mathematics. It is both formative and highly applicable. Beyond its numerous practical applications, acquiring a solid understanding of its fundamental concepts is essential for all exact sciences. Building on the knowledge gained in Mathematical Analysis 1, this course provides students with more advanced and in-depth mathematical knowledge that can be applied across various areas of their field of study. Students engage in practical applications of the mathematical concepts covered throughout the course. The need for more advanced mathematical knowledge has become increasingly significant, particularly as the field of computer science continues to develop rapidly. Engineers and computer scientists, in particular, require a strong foundation in Mathematical Analysis to effectively understand and address complex problems within their disciplines.
Algebra and GeometryThe mathematical disciplines of Algebra and Geometry are among the fundamental areas of mathematics. They are both formative and highly applicable, and a solid understanding of their basic concepts is essential for all exact sciences. Engineers, in particular, require a strong foundation in these mathematical disciplines. This course is structured as a gradual progression of mathematical knowledge designed to meet the demands of modern civil engineering. Given the rapid development of engineering sciences and their close relationship with mathematics, the course aims to provide mathematical knowledge that supports this field effectively. The selected topics are also intended to complement and support other disciplines taught at the university. In addition, the program aims to strengthen students’ intuitive and analytical thinking skills.
Probability and StatisticsThis course provides foundational knowledge of statistical indicators and methods that support decision-making processes, with particular emphasis on applying quantitative techniques to solve a range of business and societal problems. Throughout the course, students are introduced to key statistical indicators, various statistical methodologies, standard data structures, and applications for processing microdata, as well as methods for preparing summary statistical tables. In addition to statistical methods and indicators, the course introduces tools recommended by international statistical organizations, such as Eurostat, which form part of internationally recognized statistical methodologies. These include nomenclatures, registers, calculation methods, and related instruments. The lectures also cover statistical databases developed by various statistical agencies, providing students with valuable resources for practical and professional use. Students gain familiarity with essential statistical concepts, including basic statistical indicators, official statistics programs, mean, variance, regression, hypothesis testing, sampling, stratified sampling, survey design, sample size, indices, and statistical software such as SPSS.
Database Design ConceptsA database is a collection of interrelated data, where “data” refers to known facts that can be recorded and have implicit meaning. Databases play a critical role in nearly every field in which computers are used, including business, e-commerce, social media, engineering, medicine, genetics, law, education, and library science. Because the term “database” is used so frequently, the course begins by clearly defining what a database is, what purpose it serves, and how it functions. The main objectives of the course are to provide students with knowledge of database design methods, including data definition, access, management, and control, independently of specific database management technologies. Building on this theoretical foundation, the course also provides general and practical knowledge of one or two database management technologies, with particular emphasis on applying the theoretical concepts acquired throughout the course.
Computer ArchitectureThis course introduces students to the fundamental concepts of modern computer architecture, covering the primary components of computer structure and their internal functions. It provides an in-depth understanding of computer hardware and its interface with software, focusing on how these components interact to deliver the core functions of a computer system. Programming in assembly language is also an important component of the course. The course covers various formats for representing data within a computer, the operations performed on such data, and the main units involved in its processing. Students are introduced to the fundamental concepts of memory organization and architecture, including memory hierarchy, virtual memory, connections with input-output devices, machine instructions, and the structure and functions of the CPU and control unit. In addition, students learn how pipelining can be used to improve system performance. By the end of the course, students will be able to analyze current challenges in computer architecture and develop appropriate solutions to design-related problems.
Semester III
Software EngineeringThis course provides students with a comprehensive understanding of the principles of Software Engineering. It is structured around three main components: theoretical instruction, practical exercises involving case studies and software engineering examples, and a group project developed by students. The theoretical content is organized into four main areas: the principles of modern software engineering; UML as a language for software engineering; Essence as a language and toolset for defining software engineering methods and practices; and the application of software engineering methodologies to both small-scale and large-scale software development. By the end of the course, students have acquired knowledge of essential and modern software engineering methodologies, the ability to use UML for effective communication, and familiarity with Essence, the OMG standard for software engineering. They have also developed a comprehensive understanding of the principles and foundations of software engineering and are able to apply them effectively in general software development.
Data StructureThis course has enabled students to deepen their knowledge of advanced data structures in Java, including trees, binary search trees, hash tables, heaps, priority queues, and graphs. Each data structure is reinforced through practical problem-solving exercises that involve implementing specific algorithms. Students have developed the ability to implement these data structures and algorithms through practical assignments and classroom activities, with particular emphasis on Object-Oriented Programming in Java. Throughout the course, students have worked on customized projects in which they selected a specific problem and developed an appropriate solution using suitable data structures and algorithms. At the end of the course, each student presented and defended their project, explaining the implemented solution and analyzing the efficiency and suitability of the selected structures and algorithms. This process has strengthened students’ knowledge of data structure design and implementation and equipped them with practical skills for solving complex problems using Java.
Systems AnalysisThis course has provided students with knowledge of methodologies for designing and developing high-quality, efficient Information Systems by integrating Information Technology, human resources, and data in accordance with specific business requirements. Throughout the course, students have developed the ability to conceptualize the various implementation phases of an Information System and to apply Project Management methodologies to plan and monitor these phases. They have also acquired skills in conducting structured analyses and designing Information Systems, with particular emphasis on the use of UML and ERD methodologies for database design. Upon completion of the course, students have mastered the key concepts of systems analysis, learning how to understand, model, and improve systems in order to increase efficiency and add value. In addition, the course has strengthened their skills in project management, system analysis, problem identification, innovation, and the development of new systems, as well as in the use of interactive methods for gathering the information required for effective analysis and design.
Introduction to Telecommunications and ComputerNetworksThis course provides students with a comprehensive introduction to telecommunication systems. Students gain knowledge of satellite communication systems, including their architecture, functionality, and fundamental communication protocols. The course also covers signaling systems in telecommunications, including their architecture and associated protocols, as well as mobile communication systems, the functions of key network elements, and GSM cellular networks. GPRS and EDGE technologies within GSM networks are examined in detail, together with data transmission protocols and third- and fourth-generation mobile systems. Students are also introduced to wireless networks, relevant standards, and network security. By the end of the course, students are able to understand the fundamental elements of telecommunications and explain different transmission systems, including satellite systems and data networks, as well as protocols and routing mechanisms. They also develop the ability to describe the operation of telephone and mobile networks, understand basic network maintenance concepts, and design and configure a complete network.
Operating SystemsThis course enabled students to understand the fundamentals of operating system design and functionality. Throughout the course, students acquired the theoretical knowledge necessary to analyze the structure and implementation of existing operating systems. They became familiar with different types of operating systems, processes, physical memory, and practical aspects, including the use and implementation of basic commands and scripts in DOS, Windows, and Linux. By the end of the course, students had gained foundational knowledge of operating systems, practical skills in installation, maintenance, and configuration, as well as the ability to create essential scripts for system operation and management. In addition, students developed a solid understanding of fundamental operating system security concepts, including authentication, formal security models, and the identification of internal threats.
Semester IV
Algorithms and ComplexitiesThis course provided an introduction to the design, implementation, and analysis of computer algorithms. Throughout the course, students became familiar with iterative and recursive approaches to implementing various functions and methods, while evaluating their efficiency. Topics included the design and analysis of search algorithms, such as linear and binary search in both simple and more complex data structures, including binary trees and hash tables; the design and analysis of sorting algorithms, including insertion sort, merge sort, quicksort, and hash-based sorting; as well as graph traversal algorithms, including depth-first search and breadth-first search. By the end of the course, students selected a traditional algorithm with a range of applications and developed its analysis, pseudocode, and implementation using concrete data. This experience enabled them to strengthen their skills in algorithm analysis and practical implementation for solving specific computational problems.
Data ScienceThis course enabled students to learn and understand the fundamental principles of Data Science. It is structured around three main components: theoretical instruction, practical exercises involving case studies and real-world data science applications using appropriate programming languages and tools, and a group project developed by the students. The theoretical content covers core concepts, data preparation, data extraction, visualization, and result validation. The course also introduces key data science techniques through practical examples involving coding and relevant tools. By the end of the course, students had developed the ability to understand and apply common data science methodologies, prepare and analyze data, and evaluate the accuracy of results. They acquired programming skills in Python and R for data analysis and learned to use data science tools to perform advanced analyses. In addition, students strengthened their ability to present and summarize findings and to apply essential algorithms and techniques in Data Science.
Programming Language – C#This course enabled students to write and test applications in C#, mastering fundamental programming concepts such as variables, constants, arrays, conditional statements, loops, data input, and output display. Students were trained to structure programs using reusable methods and functions. By the end of the course, they had developed the ability to describe and apply the fundamental principles of object-oriented programming and incorporate these principles into project design. They also became proficient in the effective use of class inheritance and polymorphism. Throughout the course, students were introduced to the core components of both structured and object-oriented programming using C#. The course was divided into two main components: lectures, where aspects of program design, testing, and documentation were discussed; and practical seminars, where students engaged in hands-on programming in a working environment that complemented and reinforced the theoretical material covered in the lectures.
Computer Networks 1This course focused on switching technologies and router operations that support networks for small and medium-sized businesses, including wireless local area networks (WLANs) and network security concepts. Students were trained to perform basic network configuration, troubleshoot network issues, identify and mitigate LAN security threats, and configure and secure WLANs. The course also covered enterprise network architecture, design considerations, security, operations, and troubleshooting, including wide area network (WAN) technologies and Quality of Service (QoS) mechanisms used for secure remote access, virtualization, and concepts supporting network digitalization. By the end of the course, students were able to work with routers, switches, and wireless devices, as well as configure and troubleshoot VLANs, wireless LANs, and Inter-VLAN routing. They were also trained to configure and resolve redundancy issues in switched networks using protocols such as STP and EtherChannel. In addition, students developed critical-thinking and problem-solving skills through hands-on work with real networking devices and Cisco Packet Tracer.
Multimedia DesignThis course equipped students with the skills to use moving images as a means of communication, beginning with the history of cinema and its influence on mass culture. Students explored the origins of cinema, the production of early films, and the essential elements of cinematography, including fundamental techniques and principles. They also studied the post-production process using Adobe Premiere Pro. The course concluded with a final project in which students created and produced a video art piece, advertisement, or short film, integrating both technical and artistic elements. By the end of the course, students had developed practical skills in video production and strengthened their ability to manage the entire production process, from initial concept development to final production.
Semester V
Entrepreneurship and BusinessThis course aimed to enhance students’ personal and professional skills by encouraging individual entrepreneurial initiatives in business and/or their involvement in strategic decision-making processes within organizations where they currently work or aspire to work. Students were introduced to fundamental management concepts and the challenges faced by businesses, from the initial stages of creation through growth and management, with particular emphasis on the structure and content of a Business Plan. By the end of the course, students were able to identify different types of businesses, assess their significance, understand the processes of creation, development, and maturity, and recognize their role in the local economy. They were also equipped to identify common barriers and challenges faced by businesses and explore appropriate strategies for overcoming them. In addition, students developed a business plan based on an entrepreneurial idea.
Computer Networks 2This course provided students with both theoretical and practical knowledge in the field of Computer Networks through lectures and laboratory sessions. Students were introduced to switching technologies, router configuration, VLANs, WLANs, WANs, and Inter-VLAN routing. In addition, the course covered network security mechanisms and concepts, including threat actors, examples of cyberattacks, and best security practices for mitigating network threats.
By the end of the course, students had developed the skills required to understand, configure, and troubleshoot various network devices, including routers, switches, and wireless devices. They were also able to configure and resolve issues related to VLANs, wireless LANs, and Inter-VLAN routing. An important component of the course was the development of critical-thinking and problem-solving skills through hands-on work with real networking devices and Cisco Packet Tracer.
Research Methods
Artificial Intelligence/(Data Visualization)This course provides a comprehensive introduction to the field of Artificial Intelligence, covering fundamental areas such as logic, probability, and calculus, as well as perception, reasoning, learning, and action. The course also explores technologies ranging from microelectronic devices to robotic systems. Artificial Intelligence is introduced as the study of intelligent agents that perceive changes in their environment and act accordingly.
The program covers key areas including formal symbolic logic, probabilistic reasoning, knowledge representation and organization techniques, natural language processing, pattern recognition, and specialized intelligent systems. By the end of the course, students will have developed a solid theoretical foundation in Artificial Intelligence and will understand its fundamental concepts, significance, and major areas of application.
Programming Language – JavaThis course aims to enable students to understand and master the principles of advanced programming in Java, with a particular focus on developing robust web applications using Spring and Angular. Throughout the course, students progress across four key areas: advanced programming in Java, Spring, and Angular; object-oriented and aspect-oriented programming paradigms; practical exercises, case studies, and applied examples; and collaborative team-based project development. The theoretical framework covers advanced topics such as generics, lambda expressions, and concurrency APIs, along with Angular for client-side development and Spring Boot for server-side programming. The course also addresses Java design patterns and essential development tools, including automated testing and version control. By the end of the course, students will have acquired in-depth knowledge and practical skills in modern Java programming and real-world application development. They will be able to design monolithic and microservice architectures, implement parallel processing in Java, build RESTful services, and integrate these services with client applications.
Semester VI
Web Programming 2Building on the knowledge acquired in Web Programming 1, this course aims to further develop students’ skills and understanding of web programming. Given the significant evolution of computer science, particularly in the areas of the Internet and web development, the course focuses on HTML5 and related technologies such as CSS3 and JavaScript (ECMAScript 5). The course covers essential technologies for developing web applications that interact with other applications and databases, including JavaScript, XML documents, databases, authentication, security, and API development. Each concept is reinforced through practical exercises designed to support the effective acquisition and application of knowledge.
By the end of the course, students will have developed an in-depth understanding of how websites function, covering not only technical and functional aspects but also interactivity and user engagement, from initial concept development through to project completion. The knowledge acquired in previous courses serves as a foundation for further advancement in the technologies addressed throughout this course.
App ProgrammingThis course is designed to provide students with an in-depth understanding of application programming principles across various environments, including thin-client, Android, and iOS platforms. The aim is to build a solid foundation for developing robust applications using modern technologies such as Spring and Angular. The course is structured into four interconnected levels. The first introduces hybrid applications and their role within the application development ecosystem. The second focuses on the use of Java for Android development. The third involves comprehensive exercises, case studies, and practical examples that connect theoretical concepts with real-world scenarios. In the fourth level, students work collaboratively in groups to develop complete projects, applying the knowledge and skills acquired throughout the course. By the end of the course, students will be capable of developing real-world applications using modern frameworks for both native and hybrid application development. They will also learn how to integrate applications with RESTful services, enabling them to communicate effectively with external data sources and other systems.
Data Management SystemUpon completion of this course, students demonstrated both technical and theoretical knowledge of database implementation technologies. They developed the ability to assess the importance of the initial stages of database design, create Entity-Relationship (ER) diagrams, transform these diagrams into accurate relational schemas, identify functional dependencies, and normalize relations. In addition, students acquired the skills necessary to write SQL queries.
The course provided students with an in-depth understanding of database technologies, covering the various stages of database development with particular emphasis on design. It addressed existing database implementation models, including hierarchical, network, and relational models; examined the theoretical foundations of the relational model; demonstrated techniques and the importance of accurate database design; and introduced students to SQL (Structured Query Language).
Thesis and Diploma ProjectThis module aims to synthesize the knowledge acquired throughout the study program through a research-oriented and practical process, culminating in the development of a project focused on a specific topic. During the preparation of their thesis, students progress through several important stages, including topic selection, preparation of the proposed project plan, selection of an appropriate methodology, literature review, and analysis of relevant case studies.
Students also develop skills in preparing presentation panels, with particular emphasis on summarizing and structuring the key findings and outcomes of their work. The process concludes with the submission of the final project and its defense before an evaluation panel. This experience enables students to demonstrate their competencies in scientific research and analysis, as well as in organizing and presenting information effectively, concluding their studies with a structured and professionally developed thesis.
InternshipThis internship was conducted in collaboration with several companies operating in the field of Information Technology, providing students with valuable practical experience. Throughout the program, students had the opportunity to gain direct exposure to industry workflows and professional practices, including participation in real-world projects and collaboration with the technical teams of host companies.
Students applied the knowledge acquired during their studies to contribute to practical problem-solving, process optimization, and the implementation of various technologies used in the IT sector. In addition to applying their technical skills, students developed competencies in time management, teamwork, and effective communication within a professional environment. They participated in activities such as system configuration, network maintenance, application development, and software testing, while receiving guidance and support from industry mentors.
This internship provided students with valuable exposure to the professional IT environment, equipping them with practical skills and experience that contribute to their preparation for a successful career in the sector.