CasperKristiansson / KTH-Computer-Engineering-Bachelor-Courses

KTH Computer Engineering (Datateknik) Courses

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

đź”­ KTH Computer Engineering (Datateknik) Courses

The expanding adoption of cloud computing services by businesses has transformed IT infrastructure and data management in the computing space. Cloud computing offers advantages such as availability, scalability, and costeffectiveness, making it a favored choice for businesses of all sizes. The aim of this thesis is to compare private and public cloud computing services in terms of pricing and implementation effort as well as comparing the cloud providers to each other. The top three cloud providers that will be examined are Google GCP, Microsoft Azure, and Amazon AWS. The study examines different pricing models and evaluates their effectiveness in different business scenarios. In addition, the thesis also discusses the challenges associated with building and maintaining private infrastructure and the deployment of applications to cloud computing service are examined...

Overview of computer networks: network architecture and switching techniques. Introduction to the Internet, network programming, and layer architecture. Application layer: HTTP, FTP, SMTP, and CDN. Transport layer: TCP and UDP. Network layer: IP routing, NAT, and DHCP. Data link layer and local area networks: MAC protocols, Ethernet, and hubs/bridges/switches.

Course Outline

  • Introduction
  • Application Layer
  • Transport Layer
  • Network Layer: The Data Plane
  • Network Layer: The Control Plane
  • Link Layer and LANs

Course Description

This is an introductory course on operating systems. The topics include the basic concepts of operating systems, process and threads, inter-process communications, process synchronization, scheduling, deadlock, memory allocation, page and segmentation, secondary storage, I/O systems, file systems, basic security and protection. It contains the key concepts as well as examples drawn from a variety of real systems in particular from Linux.

Course Outcome

  • Describe what is an operating system and the role it plays. Recognize different types of operating systems and know the basic architecture of an operating system.
  • Understand the concepts related to processes and threads, including their creation, communication and scheduling. Identify and address deadlock, and can design algorithmic solutions to synchronization problems.
  • Explain how main memory and virtual memory are managed. Master algorithms involved in memory allocation and page replacement.
  • Know about the concepts and implementations of file systems. Comprehend the technologies like disk operations and RAID in mass-storage systems.

Methods and tools for planning, designing, implementing, validating, and maintaining large software systems. Project work to build a software system as a team, using appropriate software engineering tools and techniques.

Intended Learning Outcome

  • Ability to apply appropriate modeling techniques to design software for an application of medium complexity.
  • Ability to apply appropriate software engineering techniques to implement an application of medium complexity.
  • Ability to function effectively as a member of a software development team: organize, manage and participate in a small software development team and plan and schedule the activities involved in developing an application of medium complexity.

The course COMP3632: Principles of Cybersecurity covers topics in cybersecurity. The course was taken at computer science at the Hong Kong University of Science and Technology, and includes in-class quizzes, assignments, hacking practice, a midterm exam, and a final exam.

This course provides an introduction to the theory and application of cybersecurity. Students will develop the skills necessary to formulate and address the security needs of real-world environments. The topics of this course include cryptographic models and methods, software security, system security, network security, and conclude with emerging trends in cybersecurity.

This is the Git repository for project group 8 in the course II1302 Projects and Project Methods.

Our goal is to create an application that can through machine learning predict upcoming weather / weather phenomenon’s. The application will receive its data from a simulated IoT-device that can measure certain weather parameters such as temperature, atmospheric pressure and humidity.

This project was developed using Microsoft Azure products. The products that were used in the project are Virtual Machine (Ubuntu), SQL Database and Server, App Service (website hosting), IoT Hub (intermediate point between IoT device and database) and Storage Account.

The weather prediction application will be used by researchers and regular people. The application will be able to give the stakeholders insight in upcoming weather using a prediction model. We believe that the prediction model that will be created will be able to predict the upcoming weather accurately. But as we know our product won’t be able to predict the weather better than other weather stations. Because of this our goal is not to be better but rather offer a solution. That solution is that most weather websites only offer weather reports for entire cities. Our product will be able to offer precise weather data at a specific position using the IoT device. This will give the user a chance to choose a location where to track and predict the upcoming weather.

The course goes through partly the programming techniques that are used in functional programming languages, partly how programmes can be divided into several executing threads and how these can be coordinated. Examples of programming techniques are recursive definitions, non-updateable data structures, functions of higher order and so called “closures”. Coordination of multiple threads is shown, partly through modification of common data structures, partly through message passing between processes.

The course will use a programming language as the main language but also show similarities and differences with other functional languages.

Intended learning outcomes

After passing the course, students should be able to:

  • use recursion, pattern matching and non-modifiable data structures upon implementation in a functional programming language.

For higher grades, the student should also be able to:

  • use functions as first order objects and work with the functions of higher order
  • explain the basics of functional programming, its structure and operational semantics
  • evaluate functions with regard to time complexity
  • use message based multi-threaded programming.

The course is an introduction to networking, protocols and communication.

We study how large international networks are constructed from the individual computers, via local area, city and national networks. We use the Internet as or working example of such a network. The aim of the course is to give insights into both the theory and practice of the area.

The focus of the course is on the protocols and algorithms used, and we will follow how they are used and implemented into the TCP/IP-stack - the basis of the Internet.

Content and learning outcomes

  • Flow control and error control: flow control (stop&wait, sliding window), error detection and error handling, error correcting codes, retransmission (ARQ).
  • Layered models: overview of OSI and TCP/IP.
  • LAN (Local Area Network) and LAN-systems: topologies, access- techniques and protocols, token ring, Ethernet, wireless networks bridged networks, spanning tree computation and VLAN.
  • Packet and circuit switching: WAN (Wide Area Network) and public networks, principles, characteristics and protocols.
  • Internetworking and IP: design principles and building blocks, connection oriented vs. connectionless protocols, Internet routing and Internet Protocol (IP).
  • Transport layer protocols: TCP, UDP.
  • Communcation models: "Client-server" and "peer-to-peer".
  • Applications: DNS, SMTP, FTP, HTTP, Telnet mm.
  • Network programming.

What we have decided to create is a website that showcases movies. It is possible to search for a specific movie and observe information about that specific movie such as actors, release date, genre, score etc. The site allows users to add shows to a watchlist and a favourites list where they can store their favourite movies. The site also has score for each show, and it is possible to sort through all movies depending on multiple factors such as genre, language, release dates, region and more. The way that users are able to store their movies is by creating an account and logging in. This gives them access to edit different aspects of their profile such as bio, profile picture and name. Creating an account also gives the user access to the MovieMatcher, which is a game inspired by the dating app "Tinder", where the user swipes in one of the four directions for movies depending on whether or not they want to skip, add to favourites, add to watchlist or see more info about the movie.

Interaction programming gives the basic Model-View-Controller principles for developing interactive applications. These principles can be applied to many desktop, mobile or web apps frameworks. The course currently applies these principles to web applications, using JavaScript, DOM APIs, HTML, CSS etc. These front-end applications use data from remote back-ends using web APIs.

Course contents

  • JavaScript for interaction programming, callbacks, synchronous and asynchronous code, functional programming.
  • Web development interfaces (API): REST, JSON, AJAX, Fetch, Promises.
  • Local data: cookies, local storage.
  • User interfaces, appearance: HTML, CSS, DOM API, other tree based frameworks for user interfaces (e g Android).
  • User interfaces, interaction: events, event levels, event propagation, event management.
  • User interfaces, architectures: Model-View-Controller.
  • User interfaces, frameworks: React, Angular, Vue.

The course introduces the area of databases/data storage. The following subjects ar covered:

  • Introduction to databases, data storage and information administration
  • The relational model
  • XML
  • Conceptual modeling and Logical database design
  • Query languages
  • Embedded query languages

https://www.kth.se/student/kurser/kurs/IV1351

Project Description, the Soundgood Music School

The purpose is to facilitate information handling and business transactions for the Soundgood music school company, by developing a database which handles all the school's data and also an application that can handle some of the transactions.

Building a database without structure will most likely end up failing or being extremely bad. In this project the author will structurally build a database for the Soundgood music school. The author solved the task by building a conceptual model, logical model and then translating it to SQL code to create the database itself. The database can perform various of different tasks such as managing the school´s instruments, lessons, students, and instructors. A command line interface will be developed to manage some aspects of the database. The author will be discussing and motivating each step of designing the database and how each step of the project was solved.

A basic course in computer science, that will give prerequisites for several advanced courses in computer science. The course will cover both theory on algorithms and data structures as well as practical software design.

Course contents

Basic algorithm analysis:

  • Simpler analysis with respect to the resource needs of algorithms in the form of time and memory.

Fundamental algorithms:

  • simple numerical algorithms
  • sequential and binary search algorithms
  • Depth first search and Width first search.
  • sorting algorithms: selection sorting, insertion sorting, Quicksort, heapsort, mergesort.

Fundamental data structures:

  • linear lists, stacks, queues, hash tables, binary tree, heaps, binary search trees and problem trees.

Program Design:

  • design and implementation of programmes that use basic algorithms and data structures to solve computer science problems.

This course makes you able to implement a given requirement specification in flexible and easily understood code. To reach this goal, the course covers fundamental concepts of object-oriented analysis, design and architecture, such as low coupling, high cohesion, encapsulation and polymorphism. The course also gives hands-on experience in using these concepts to design and implement an object-oriented program.

Course contents Examples of fields that are treated:

Object-oriented design and design pattern Architecture and architectural patterns Guidelines for object-oriented programming for example refactoring and unit testing UML (Unified Modeling Language) Object-oriented analysis

Course contents

The course gives basic knowledge of how a computer functions and is built-up both from a hardware and from a software perspective The course is divided into six different modules, which for example include the following basic concepts:

  1. C-programming and assembler language: pointers, functions, stack, assembly language, machine language, instruction encoding and processor registers.
  2. I/O system: timers, interrupts and memory mapped I/O.
  3. Digital design: truth tables, gates, boolean algebra, multiplexers, decoders, adders, combinatorial nets, sequential networks and registers.
  4. Processor construction: arithmetic-logic unit, data path, control unit and pipeline.
  5. Memory architectures: instruction cache, data cache and virtual memory.
  6. Parallel processors and programs: Amdahl's law, different variants of parallelism as well as multicore.

Intended learning outcomes

After passing the course, the student shall be able to

  • Implement low-level programs in the C programming language and in an assembly language
  • Implement low-level programs with input-output, timers, and interrupts
  • Analyse processor microarchitectures, with and without a pipeline,
  • Analyse memory hierarchies, including cache-structures.
  • Compare fundamental concepts about multiprocessor computers.
  • Explain and describe technical solutions both orally and in writing.

Fundamental constructs:

  • Basic syntax and semantics of a higher-level language
  • Variables, types, expressions and assignment
  • Simple I/O
  • Conditional and iterative control structures
  • Functions and parameter passing
  • Structured decomposition

Data structures:

  • Representation of numeric data
  • Range, precision, and rounding errors
  • Arrays
  • Representation of character data
  • Strings and string processing
  • Runtime storage management
  • Pointers and references

Algorithmic problem solving:

  • Problem-solving strategies
  • The role of algorithms in the problem-solving process
  • Implementation strategies for algorithms
  • Debugging strategies
  • The concept and properties of algorithms

Object-oriented programming:

  • Object-oriented design
  • Encapsulation and information-hiding
  • Separation of behavior and implementation
  • Classes and subclasses
  • Inheritance
  • Polymorphism

Exceptions:

  • Exception handling