The first year of the program is primarily dedicated to foundational courses in programming, aimed at providing students with a fundamental basic understanding of both programming and mathematics. The second year is centered around the specialization in software development and mobile platforms and lastly the thrid year is focused around working in project from a therotical perspective. The education is largely based on projects and exercises that provide practical experience of the techniques being taught. Projects can span across multiple courses: in one course, you might build a user interface for a mobile app, then in the next course, construct its data storage, and in a third course, work on its network functionality. This approach offers a holistic view and understanding of the entire development process.
- Introduction to Computing 7.5hp TDIG19
- Discrete Mathematics 7.5hp TDMG17
- Introduction to Programming 9hp TIPK10
- Linear Algebra 6hp TLJG17
- Databases 6hp TDRK18
- Datastructures and Algorithms 7.5hp TDSK17
- Calculus 1 (Envariabelsanalys) 9hp TEVG17
- Object oriented programming 7.5hp TOPK18
- Web Development Fundamentals 7.5hp TGWK12
- Object-oriented Software Development with Design Patterns 7.5hp TOUK18
- Android Development 7.5hp TAGK19
- Network programming 7.5hp TNPK18
- iOS Development 7.5hp TISK18
- Web Development - Advanced Concepts 7.5hp TFWN19
- Industrial Placement Course in Computer Engineering 12hp TNDN15
- DevOps Fundamentals 7.5 hp TDOK12
- Information Security 7.5 hp TIHG10
- Research Methods in Computer Science and Informatics 7.5 hp TFIN13
- Intelligent Mobile Systems 7.5hp TIGN13
- Business Planning and Entrepreneurship 7.5hp TBPG19
- Bachelor’s Thesis in Computer Science and Engineering 15 hp
The content of the course aims to provide the student with an introduction to fundamental computer science terms and concepts, as well as an understanding of how code is compiled and executed on a computer. The course is organized and assessed through a combination of an exam and laboratory assignments. The laboratory component of the course encompasses a series of practical assignments, affording students valuable hands-on experience and an avenue to put into practice the theoretical insights acquired during the lectures. The course includes the following topics:
- Introduction to digital technology
- Data representation formats
- CPU architecture
- Introduction to assembler and C
- Compilation tools and the compilation process
- Embedded systems
The course introduces some of the fundamental elements of discrete mathematics, including set theory, combinatorics, modular arithmetic, propositional and predicate logic, and graph theory. The course is assessed through a final exam. The course includes the following topics:
- Basic integer mathematics and modular arithmetic
- Numbers in different bases
- Set theory with applications
- Combinatorics with applications
- Mathematical recursion and induction
- RSA encryption and other ciphers
- Functions and relations between finite sets, equivalence relations
- Fundamental graph theory
- Propositional logic, predicate logic, and logical reasoning.
The course aims to provide the student with fundamental knowledge in structured programming, including program design and implementation through imperative programming in C/C++. This course is organized and assessed through a combination of an exam and laboratory assignments. The laboratory component of the course encompasses a series of practical assignments, affording students valuable hands-on experience and an avenue to put into practice the theoretical insights acquired during the lectures.
The course includes the following topics:
- Problem-solving with stepwise refinement
- Program structures (sequence, selection, iteration)
- Built-in and user-defined data types
- Memory allocation, pointers, and references
- Functions
- Introduction to classes and objects
- Using a debugger
- The C/C++ programming language, specifically the subset of C++ corresponding to C What distinguishes the C programming language from the subset of C++ we use in the course.
The course introduces vectors and demonstrates how vector calculations are used to solve geometric problems. It provides theory and systematic methods for solving linear equation systems. Additionally, determinants, matrices, and matrix algebra are introduced. The course includes the following topics:
- Linear equation systems, Gaussian elimination
- Vector algebra with geometric applications
- Matrices and matrix algebra
- Determinants with applications
- Bases and base changes
- Eigenvalues and eigenvectors, diagonalization, Markov processes
- Using software for vector and matrix calculations.
In this course the systems MySQL and Microsoft SQL Server Management Studio were utilized. Upon course completion, students will have gained a comprehensive understanding of fundamental concepts related to relational databases, enabling them to proficiently model, create, and query simple databases according to specified requirements. Moreover, students will develop insight into the role of database development within the broader context of system and business development. The course was examinated with an exam and a small project in databases. The course encompasses the following key topics:
- Relational databases and their theoretical foundations
- Database design using entity/relationship modeling
- Normalization theory
- Query languages
- Databases in the system development life cycle
- Transaction management
Advanced computer programs almost always make use of certain fundamental data structures (stacks, queues, hash tables, etc.). A programmer must, therefore, be well-acquainted with these data structures. They must understand how they work, what performance they offer, and how they can be utilized by programs solving complex problems. This course aims to address this need while providing students with the opportunity to practice their previously acquired knowledge in C/C++ and deepen their understanding of structured programming. The course covers the most fundamental data structures in computer science and the algorithms used to store and retrieve data from these structures. The course also includes several examples of applications.The course includes the following topics:
- Recursion
- Algorithm Analysis
- Basic Data Structures
- Graphs
- Sorting
The course aims to provide fundamental knowledge of differential and integral calculus in a real variable and to enhance the ability to use the language and symbolism of mathematics to follow and conduct logical and mathematical reasoning. This, in turn, creates the foundation for the mathematical treatment of technical problems in professional practice. The course examination cotains two bigger exams and weekly homework assignments. The course includes the following topics:
- Function theory, domain, and range
- Elementary functions and their inverses
- Limits and continuity
- Derivatives, rules of differentiation, and some applications of derivatives such as differential calculus, optimization problems, and numerical equation solving using the Newton-Raphson method
- Techniques for determining antiderivatives, partial integration, variable substitution, and simple partial fraction decomposition
- Computation of definite and indefinite integrals
- Linear and separable first-order differential equations
- Second-order linear differential equations with constant coefficients
This course equips students with both theoretical knowledge and practical skills in object-oriented software development.The course is designed to provide students with a solid understanding of object-oriented software development and programming languages. The course examination cotains an exam at the end and additionally weekly homework assignments.The course covers the following key components:
- Object-Oriented Concepts: Exploring the fundamental principles of object-oriented programming, including objects, classes, encapsulation, inheritance, and polymorphism.
- Object-Oriented Design: Teaching students how to design software systems using object-oriented methodologies, including creating class hierarchies and modeling complex systems.
- Object-Oriented Languages: Introducing different object-oriented programming languages and their unique characteristics.
- Practical Application: Allowing students to apply their knowledge through hands-on exercises and projects, solving real-world problems.
- Programming Practice: Involving actual coding and implementation of object-oriented programming concepts.
The course aims to provide fundamental knowledge in web programming. It begins with an overview of the structure of the web and continues with how to build static web pages using HTML and CSS. It then covers JavaScript and Node.js, teaching students how to implement dynamic web pages that can generate different HTML codes for various clients. Users can fill in forms and send data to the server. Special emphasis is placed on cookies, sessions, database usage, and security. The course assessment comprised an individual project, an examination and additional lab assigments. The course includes the following topics:
- Client-server communication and HTTP
- HTML
- CSS and CSS frameworks
- JavaScript
- Node.js and Node Package Manager
- Frameworks and related technologies
- Forms, cookies, and sessions
- Security
The course aims to provide students with the knowledge required to perform object-oriented design in accordance with established practices and to be able to implement the results of such design in program code. The course includes the following topics:
- Introduction to software development methodologies: waterfall models, iterative methods, agile methods
- Software requirements specification and validation
- Unified Modeling Language: class diagrams, sequence diagrams, use case diagrams, etc.
- Design patterns: object-oriented patterns, analysis patterns, patterns for system architecture
The purpose of the course is to give an introduction to and experience of Android programming, from start to finished and published app. The course includes the following topics:
- Android architecture
- Java
- The Android SDK
- Handling different runtime configurations
- GUI development for Android
- Sensors (gyroscope, GPS, camera)
- Network communication in Android
- Other key APIs
- Publishing on the Google Play Store
The course provides an introduction to the structure of the Internet and TCP/IP protocols, but then focuses on the upper layers of the OSI model (session, presentation, and application layers).The course includes the following topics:
- Introduction to data networks and the OSI model
- Introduction to TCP/IP protocols
- Client/server concepts
- Socket programming
- Scripting languages
- Certain standard services and their protocols (Telnet, HTTP, SMTP, DNS, etc.)
- How secure communication can be achieved through authentication and encryption (HTTPS, DNSSEC, S/MIME, PGP, etc.)
- Principles of data compression for text and images
- Decentralized architectures (Tor, Bitcoin, GPG, etc.)
The course aims to provide students with knowledge and hands-on experience in applied iOS programming, from the initial stages to the completion and publication of an app. The course includes the following components:
- XCode and Swift
- Memory management
- Common design patterns in iOS APIs
- GUI development in iOS
- Software quality
- Testing and debugging
- Sensor usage
- Network communication in iOS
- Other important APIs
- Publishing in the App Store
The course aims to convey advanced knowledge in web development. It begins with an overview of the use of JavaScript and the Document Object Model to directly modify the graphical interface of a website on the client side. Some key client-side libraries and APIs are also introduced. Following that, the focus shifts to the server side, covering Node.js and associated frameworks, teaching students how to build scalable database-based backend solutions that communicate with frontend applications through REST APIs. The security perspective is maintained throughout the course, both on the client and server sides, as well as a focus on good program structure with containers to facilitate the development, testing, and deployment of web applications.
The course includes the following components:
- Document Object Model
- Client APIs and libraries
- Architecture and REST APIs
- Containers for web development
- Backend in Node.js
- Authentication and authorization
- Calling other web services
Completed a seven-week internship (industry-based course in Computer Engineering) at Albia. The tasks involved continuing the development of a cloud service, a customer portal. The work included developing pages for contracts and user statistics, as well as implementing functions and managing database communication. The project utilized a non-relational database (NoSQL).
The course aims to convey the fundamentals of DevOps in software architecture. Teaching covers everything from the initial idea of DevOps, the need for DevOps and the benefits of DevOps in software solutions. The course focuses on how to identify potential DevOps solutions in software architectures, embracing the DevOps life cycle, planning with DevOps, developing for DevOps, and finally deployment in a DevOps pipeline. The course also gives the students the ability to implement their own DevOps pipelines in already existing solutions, utilizing skills and knowledge gained from previous courses in software development which DevOps builds on.
The course includes the following elements:
- Evolution of DevOps
- Benefits of DevOps
- Monoliths vs Microservices
- Identifying appropriate DevOps solutions
- Integrating DevOps solutions
- Establishing DevOps values
- DevOps Life Cycle
- Planning with DevOps
- Ensuring Maintainability, Scalability, Security, Usability, Reliability and Flexibility
- Deployment, CI/CD
- Documenting DevOps
In today's society, there are high demands for information security.The course aims to provide an overview of the field of information security by introducing common concepts, principles, models, and standards. It also covers human factors in security work and the role of humans in the field of information security. Furthermore, information security is an interdisciplinary field with connections to many other areas, such as law and ethics, which are therefore addressed in the course.
The course includes the following topics:
- Common concepts and terms in the field of information security
- Authentication methods
- Malware and malicious programs
- Operating system security
- Network security
- Management systems for systematic information
The course provides a fundamental introduction to modern approaches to science, with a focus on engineering, computer science, and informatics. The course emphasizes giving students insight into the history and philosophy of science, as well as how scientific methods are applied within engineering, computer science, and informatics. Upon completion of the course, students will have acquired sufficient knowledge on how to conduct research projects and how to write scientific reports.
The course covers the following topics:
- Different research paradigms: Positivism, Hermeneutics, Interpretation, Critical Research, Design Science, Action Research
- Computer science and informatics as research fields
- Inductive and deductive research
- Qualitative and quantitative studies
- Systematic literature review
- Experiments and proof of concept as research methods
- State of the art
- Writing and reviewing scientific reports