Tenta Flashcards

1
Q

Hur många jämförelser behövs i värsta fall respektive bästa fall för hitta ett element i en sorterad lista med 16 element om du använder dig av binärsökning.

Motivera kortfattat ditt svar

A

I bästa fall (om man har tur behövs bara en jämförelse). I värsta fall kommer det behövas 𝑙𝑜𝑔(2 nere)16 + 1 jämförelser. I binärsökning kan man I varje iteration bortse från hälften av återstående element. Efter 𝑙𝑜𝑔(2 nere )16 delningar på mitten har man endast 1 element kvar. Om man inte redan hittat elementet man söker efter behövs ytterligare 1 jämförelse.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Stämmer det att en rutin (algoritm) för att lösa ett 𝒩𝒫-fullständigt problem kan användas som subrutin för att läsa vilket problem som helst i 𝒫?
Motivera ditt svar. (2p)

A

Ja, eftersom en rutin för att lösa ett 𝒩𝒫 fullständigt problem kan användas som subrutin för att läsa vilket problem som helst i 𝒩𝒫 och 𝒫 är en delmängd av 𝒩𝒫

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

include <stdio.h></stdio.h>

Look at the following C code, what will be printed after it is executed? Motivate why the output is the one you think is. (2pt)

int addOne(int var)
{
var = var + 1;
}
int main()
{
int a = 10;
addOne(a);
addOne(a);
addOne(a);
printf(“%d “, a);
return 0;
}

A

The output is 10, this is because the function does change the value of a, because arguments are passed as value to functions in C, that is, their value is copied locally in the function, without modifying the variable outside the function.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

include <stdio.h></stdio.h>

We change the code a little, what would be printed now? Please motivate the answer. (2 pt)

int addOne(int* var)
{
*var = *var + 1;
}
int main()
{
int a = 10;
addOne(&a);
addOne(&a);
addOne(&a);
printf(“%d “, a);
return 0;
}

A

In the second case the output is 13 because we pass the address of a, then the value inside the memory position is modified which survives after the execution of the function.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Full in the first column of this table placing the following different types of memory:
DRAM, EEPROM, SRAM, PROM, NVRAM, Masked ROM, Flash, EPROM

A

The memory types are placed in this order: SRAM, DRAM, Masked ROM, PROM, EPROM, EEPROM, Flash, NVRAM

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Explain the difference between “Memory mapped I/O” and “Port mapped I/O”

A

Memory mapped I/O is mapped into the same address space as program memory and/or user memory, and is accessed in the same way. Memory and IO share the same address and are used in the same way.

Port mapped I/O uses a separate, dedicated address space and is accessed via a dedicated set of microprocessor instructions. IO and memory use different address spaces, when accessing memory, the programmer must specify if it’s memory or IO

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

You are developing the firmware for a microntroller that controls the lights of a Christmas tree.
One of the pins of the microcontroller is connected to a button, which is used to control the device. The button is connected, on one side, to the microcontroller and on the other side to the voltage supply (Vcc).

A) (2 pt)
How should you configure your pin to detect when the button is pressed? You have the following 2 options to configure:
* Direction: can be input or output
* Connection: can be direct, pulldown or pullup.

B) (2 pt)
You want your lights to fade and blink smoothly, so you program the microcontroller to emit Pulse Width Modulation (PWM) pulses on a pin to control the light intensity. The PWM pulses are controlled by a timer, which, you estimate, should tick at 1KHz so that users would not notice any flickering. Your microcontroller has a master clock of 8MHz, a prescale register of 8 bits and a compare register of 8 bits. How do you set the values for these two in order to obtain the desired frequency of 1KHz?

A

A)
Input and pulldown. Pulldown is needed because when the button is not pressed, the pin is floating.

B)
Both the prescaler, P, and the compare register, C, accept values between 1 and 256.
Your target is 8M / (P x C) = 1000
Which means that P x C = 8000
We can set, for example, P = 200 -> C = 8000/200 = 40

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Vilka steg behövs för att ta bort första element i en dubbel-länkad lista?(2pt)

A

Antag att det finns minst 2 element i listan.
1. Spara undan adressen till första elementet i en temp-variabel (så att man inte tappar bort det). Dvs temp = start
2. Peka om listans start-pekare (dvs den pekare som pekar på listans första element), så att den istället pekar på listans andra element. Dvs start = temp->next, eller start = start->next
3. Låt listans andra elements prev-pekare peka på null. Dvs start->prev = null (eller temp- >next->prev = null
4. Avallokera minnet för det element som tagits bort. Dvs det element som ligger i temp-variabeln

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Vid sortering av en lista är basoperation att jämföra två element.

a. Vad har algoritmen bubble sort för tidskomplexitet? Använd 𝜃-notation. (1pt)

b. Hur många basoperationer behövs (alltid) för att sortera en lista med 10 element med hjälp av bubble sort? (1pt)

A

a. Bubble sort har tidskomplexiteten 𝜃(𝑛2).
b. Det behövs 9 + 8 + 7 + 6 + 5 + 4 + 3 + 2 + 1 = 𝑛∙(𝑛−1)/ 2 = 45 jämförelser (basoperationer)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Är följande binära sökträd balanserat? Motivera kortfattat ditt svar. (1pt) (20231108 fråga 5)

A

Trädet är inte balanserat. Vänster subträd till noden med värdet 9 har höjden 2, medans höger subträd till samma nod har höjden 0.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Lägg in en nod med värde 10 i sökträdet i trädet ovan, och visa hur trädet ser ut efteråt. Är trädet balanserat? Motivera kortfattat ditt svar.(2pt) (20231108 fråga 5)

A

Trädet är balanserat då höjden på vänster och höger subträd inte skiljer sig med mer än 1 för någon nod i trädet

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

What is the size of an integer in C?

How can I choose a specific size (for example 8 bits) for an integer?

A

The size of an integer depends on the environment, including compiler, CPU architecture and used libraries.

In C99 you can import inttypes.h and use specific defines for specific sizes (fixed-width integer types)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Describe the steps needed to compile a piece of code from source code to executable, in C

A
  1. Preprocessing: performs simple text modification.
  2. Compilation: generates assembler code from source code.
  3. Assembly: generates machine instructions from assembler code.
  4. Linking: links all “modules” together into one executable.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

A peripheral is connected to a microcontroller using the I2C protocol. In order to activate the peripheral, the microcontroller needs to write the content of a register, the address of which is specified in one byte (for example 00101010), with a specific 1 byte content (for example 10011001). The I2C address of the peripheral is 00110011.
With the help of the pictures below, describe the sequence of bits sent by the microcontroller to the peripheral (20231108 fråga 8)

A

The microcontroller sends:

  • Start signal (SDA->low SCL->high)
  • Address of the peripheral (00110011)
  • Write bit
  • ACK by receiver
  • Register address (00101010)
  • ACK by receiver
  • Value (10011001)
  • ACK by receiver
  • Stop signal (SDA->high SCL->high)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

What are the advantages and disadvantages of using “Direct conversion” versus “Successive approximation” in Digital to Anaologue Conversion.

A

Direct conversion is almost instantaneous but requires an exponentially higher number of comparators in relation to the number of bits, making the circuit more expensive. Successive approximation, on the other hand, requires linearly higher time for number of bits used, the circuit is smaller but slower

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

List the 5 views of the 4+1 view model.

A

Just listing the names correctly is enough for 1 point.

  1. The logical view. It shows the key abstractions in the system as objects or object classes “code structure”. It focuses on the functionality.
  2. The process view shows how, at run-time, the system is composed of interacting processes
    “running code”. It focuses on concurrency and distribution.
  3. The implementation/development view shows how the software is decomposed for
    development “who does what”. It focuses on the on the software development
    environment.
  4. The physical/deployment view shows the system hardware and how software processes are
    distributed across the processors in the system “things you can touch”.
  5. All views are related using use cases or scenarios. This view shows how the elements in the
    four views work together in relation to how they are used externally, from people or
    machines.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Vilka steg behöver du genomföra för att lägga in ett element i mitten av en array? Antag att det finns plats att lägga in minst ett element i arrayen och att det redan finns några element i arrayen. Vi vill inte att ni skriver pseudokod, utan det räcker med en konceptuell beskrivning av vad som behöver göras. (2pt)

A
  1. Ta reda på vilken plats det nya elementet skall stoppas in. Antag att det är index i.
  2. Flytta/kopiera alla element som ligger på plats i eller senare. ett steg “bakåt”.
  3. Lägg in det nya elementet på plats i.
18
Q

Sortera följande lista med 16 element med hjälp av algoritmen mergesort.
8, 7, 16, 2, 14, 25, 23, 11

Är detta värsta-fallet för mergesort, det vill säga det fall där sortering av 8 element kräver maximalt antal jämförelser? Motivera kortfattat ditt svar.

Om det inte är värsta-fallet, skapa ett värsta-fall med samma värden som i listan ovan

A

Detta är inte värstafallet för mergesort då värsta-fallet kräveratt största och näst största värdet tillhör olika listor i varje merge-iteration där listorna har mer än 1 element vardera. Om man byter plats på 25 och 16 i den ursprungliga listan skulle man ha ett värsta-fall. (andra halvan på 20231218 fråga 4)

19
Q

Den här frågan testar din kunskap om tillståndsmaskiner.

a. Vilka tre ”komponenter” ingår i en finit tillståndsmaskin (Eng: Finite State Machine)? (1p)

b. Vad är en Mealy-Moore maskin? (1pt)

A

a. Tillstånd, överföringar mellan tillstånd och villkor för överföringar.

b. I en Moore-maskin körs kod i tillstånden medans kod körs övergången mellan tillstånd i en Mealy maskin. En Mealy-Moore-maskin är en kombination av dem båda.

20
Q

Describe the way bootloading works on an ESP32. Describe each step including first and second stage bootloaders.

A

First-stage bootloader: configures the access to the external flash memory and, if required, stores on it new data coming from the serial/USB port. Once finished, it accesses the flash memory (at address 0x1000) and loads and executes the second-stage bootloader.

Second-stage bootloader: reads the partition table at address 0x8000 and searches
for app partitions. It decides which application must be executed based on the content of the otadata partition: if this partition is empty or doesn’t exist, the bootloaded executes the application stored in the factory partition.

This allows to implement an over-the-air (OTA) application update process: the application code downloads the new version of your application (e.g. from web) and stores it in a new app partition.
Once the upload is completed, the id of the partition is saved in otadata and the chip is rebooted; the bootloader will execute the new version

21
Q

a) What happens when a function is declared with the keyword “extern” in C? (1pt)

b) What happens when a variable is declared with the keyword “extern” in C? (1pt)

A

a) Nothing particular. An extern function is a function that is defined somewhere else (in another C file). Anytime a function is declared, it is by default extern (even if one doesn’t use the extern keyword). In fact, functions are always global unless declared static.

b) A variable declared as extern in a module (c-file) means that the variable is defined in another module. The memory space is thus reserved in another module, but the compiler knows the type even though it does not reserve any memory space. The variable is implicitly global.

22
Q

Merge är den grundläggande operationen i algoritmen Mergesort, och den används för att “sammanfoga” två sorterade listor till en sorterad lista. I värsta fall krävs det 2𝑛 − 1 jämförelser för att slå samman två sorterade listor som innehåller 𝑛 element vardera till en sorterad lista med 2𝑛 element. Förklara när detta “värstafall” inträffar och ge ditt eget exempel som illustrerar detta fall.

A

Värstafallet inträffar när det största elementet och det näst största elementet av de två listorna inte finns i samma lista.

Till exempel innehåller den första listan värdena 1, 2, 3, 7 och den andra listan innehåller värdena 4, 5, 6, 8

23
Q

Hur visar man att ett problem 𝑃 är 𝒩𝒫-fullständigt (Eng: 𝒩𝒫 complete)? (2p)

Tips: Man behöver göra två saker.

A
  1. Visa att 𝑃 är i 𝒩𝒫
  2. Identifiera något annat problem 𝑃’ som man vet är 𝒩𝒫-fullständigt, och visa att 𝑃’ kan bli polynomiskt reducerat till 𝑃.
24
Q

Describe the use of the stack and the heap memory in C. (2pt)

Hints: How and when they are allocated? What do they contain?

A

Stack memory is used to allocate temporary memory when a function is called. Each time the function is called, the stack is allocated a piece of memory needed to store a copy of the arguments, local variables and the return address.

Heap memory is allocated manually by the programmer. It is used for variables the life of which is limited in time (otherwise they would be allocated on the static memory) and need to survive after the execution of a function.

25
Q

a) What happens when a function is declared with the keyword “extern” in C? (1pt)

A

a) Nothing particular. An extern function is a function that is defined somewhere else (in another C file). Anytime a function is declared, it is by default extern (even if one doesn’t use the extern keyword). In fact, functions are always global unless declared static.

26
Q

b) What happens when a variable is declared with the keyword “extern” in C? (1pt)

A

b) A variable declared as extern in a module (c-file) means that the variable is defined in another module. The memory space is thus reserved in another module, but the compiler knows the type even though it does not reserve any memory space. The variable is implicitly global

27
Q

Describe the steps needed to update the firmware, including the bootloader, on an embedded system.

Hints: Describe the steps taken by the bootloader (the one installed, not the new one) to upload the firmware (including the new bootloader) specifying what parts go into RAM and what parts go into ROM

A
  1. Copy the current bootloader from ROM to RAM.
  2. Run the current bootloader from RAM instead of ROM.
  3. Copy the new firmware (including bootloader) to a scratch area (in RAM if enough available, otherwise ROM).
  4. Check validity of new code, eg with a checksum.
  5. If OK: substitute the old with the new code. Else: leave old code, maybe retry.
  6. Reset the processor to run the new code.
28
Q

How can low power modes be integrated into how tasks are managed in FreeRTOS?

Hints: Please describe the strategy in the context of the FreeRTOS and its ”idle task”, not how this is done in the ESP-IDF

A

One can use the idle task hook to place the microcontroller into a low power state, but the microcontroller would need to be waken up at every process tick interrupts which is wasteful.

A better option is to use the tickless idle mode, which stops the periodic tick interrupt during idle periods, then makes a correcting adjustment to the RTOS tick count value when the tick interrupt is restarted. The CPU will be woken up when either an interrupt occurs, or the time has come for a task to be put in the ready state. Periodic ticks will be suppressed when:
a) the Idle task is the only
task able to run because all the application tasks are either in the Blocked state or in the Suspended state and b) at least n further complete tick periods will pass before the kernel is due to transition an application task out of the Blocked state

29
Q

Which UML diagram - or diagrams- would you use for the “logic view” of 4+1 view model?

A

Class and Object Diagrams are well suited for representing the logic view of the software architecture.

30
Q

Den här frågan testar din kunskap om tillståndsmaskiner.
a. Vilka tre ”komponenter” ingår i en finit tillståndsmaskin (Eng: Finite State Machine)? (1p)
b. Vad är den huvudsakliga skillnaden mellan en Mealy maskin och Moore maskin? (1pt)

A

a. Tillstånd, överföringar mellan tillstånd och villkor för överföringar.
b. I en Moore-maskin körs kod i tillstånden medans kod körs övergången mellan tillstånd i en Mealy maskin

31
Q

Hur många jämförelser behövs i värsta fall för hitta ett element i en sorterad lista med 32 element om du använder dig av binärsökning. Motivera kortfattat ditt svar

A

I värsta fall kommer det behövas 𝑙𝑜𝑔232 + 1 jämförelser. I binärsökning kan man i varje iteration bortse från hälften av återstående element. Efter 𝑙𝑜𝑔232 delningar på mitten har man endast 1 element kvar. Om man inte redan hittat elementet man söker efter behövs ytterligare 1 jämförelse

32
Q
  • Are arguments passed by value or reference to functions in C? (1pt)
  • Is there any way to pass a variable to a function and make sure that the function can modify its value after the end of execution of the function? (1pt)
A

Arguments are passed by value.

Yes, one can return a new value and assign it to the variable, or one can pass the pointer to the variable instead of the variable itself.

33
Q

Analyze the code of this recursive function. Is there any case where it can create a stack overflow?

Which case, or cases?

// Greatest Common Divisor (Största gemensamma delare)
// returns the largest positive integer that divides each of the integers
// Euclid’s algorithm, with a bug.
unsigned int GCD(unsigned int a, unsigned int b) {
if (a == b) return a;
else return GCD (a - b, b);
}

A

Stack overflow can happen if either a or b or both are very large (if only this answer is given -> 1pt).

Also if, at any of the recursive calls, a<b then the a-b will be read as a big positive number (being unsigned), which will likely cause stack overflow. In other words, it only works if the arguments passed the first time are a > b and a is a multiple of b

34
Q

Describe the steps needed to compile a piece of code from source to executable in C.

A
  1. Preprocessing: text modification.
  2. Compilation: from text to assembler code.
  3. Assembly: from assembler code to bytes.
  4. Linking: links all “modules” together into one executable.
35
Q

The variable reg is an unsigned integer of 8 bits in C. How do you set the 3rd bit from the right to 1 of its value?

unsigned int reg;
// your code here

A

reg = reg | (1 &laquo_space;2);

36
Q

What is the difference between declaring and defining a variable in C? (1pt)

And a function? (1pt)

A

Declaration means the places where the type of the variable or function is described so that it can be used correctly. No space is reserved in the memory for the variable or function. A function declaration (“function prototype”) allows the compiler to check that the function is used correctly with the right type of argument in different modules. Usually done in .h files.

Definition means the place (the only one) where a variable or function is created. It is reserved space in memory. A function definition contains the code that describes what to do when called (the body). Usually done in .c files

37
Q

Den här frågan testar din kunskap om tillståndsmaskiner.
a. Vilka tre ”komponenter” ingår i en finit tillståndsmaskin (Eng: Finite State Machine)? (1p)
b. Vad är en Moore-Mealy maskin? (1pt)
c. Beskriv fördelen med att använda ett händelse-baserat system (Eng: event based system) där tillståndsmaskinen prenumererar på händelser istället för att använda sig av så kallad ”polling” för att testa för överföringar? (1p)

A

a. Tillstånd, överföringar mellan tillstånd och villkor för överföringar.
b. I en Moore-maskin körs kod både i tillstånden och i överföringarna mellan tillstånden.
c. Test för tillståndsöverföring kan vara dyrt, vilket kommer fungera dåligt i ett realtidssystem.

38
Q

Antag att du arbetar med en datastruktur där man kan lägga till och ta bort element. Antag vidare att tiden för att lägga till ett element kan beskrivas med en funktion som växer linjärt (dvs 𝑛) med antalet element som finns i datastrukturen. Detta innebär att en övre gräns för tiden det tar att lägga till 𝑛 element är 𝑂(𝑛2). Antag nu istället att du kommit på ett nytt sätt att lägga till ett element i datastrukturen, där tiden beror logaritmiskt (dvs log 𝑛) på antalet element i datastrukturen. Vad blir då den övre gränsen, i ordo-notation, för att stoppa in 𝑛 element i datastrukturen. Förklara ditt resonemang.

A

Om tiden att lägga in 1 element är 𝑂(𝑛) så blir tiden för att lägga in 𝑛 element 𝑛 ∙ 𝑂(𝑛) = 𝑂(𝑛2).
Om tiden att lägga in 1 element istället är 𝑂(log 𝑛) så blir tiden för att lägga in 𝑛 element 𝑛 ∙
𝑂(log 𝑛) = 𝑂(𝑛 ∙ log 𝑛).

39
Q

Describe the types of memory that can be used in embedded systems including both volatile and non-volatile ones.

Hint: the answer should include 8 types to get all 3 points

A
  1. (static) SRAM: memory is kept as long as power is on, expensive
  2. (dynamic) RAM: memory is lost every few ms and rewritten, cheaper
  3. Masked ROM: hardwired memory
  4. (programmable) PROM: writeable only once, keeps content without power
  5. (erasable and programmable) EPROM: can be deleted with ultraviolet
  6. (electrically-erasable-and-programmable) EEPROM: can be erased electrically, costly and slow
  7. Flash: r/w, but writes are slow, cheap
  8. (non-volatile) nvRAM: an SRAM with battery
40
Q

Describe the common steps taken when implementing an Interrupt Service Routine (ISR).

Hint: you
don’t need to write pseudocode, just use your own words.

A
  1. Disable interrupts to avoid race conditions (all interrupts or just the ones of the same type)
  2. Identify the cause of the interrupt (and clear it if needed)
  3. Deal with the cause, quickly, avoid calling non re-entrant functions
  4. Enable interrupts
  5. If anything is left that is race-safe, do it here
41
Q
A