lu.se

Datavetenskap

Lunds Tekniska Högskola

Denna sida på svenska This page in English

Laborationer

Laborationerna är obligatoriska. De äger rum i grupper i läsveckorna 2 - 7 i läsperiod HT2. Man ska samarbeta två och två. 

Anmälan och gruppindelning görs i SAM.

Reflektionsfrågor

Till varje labb finns ett antal reflektionsfrågor. Dessa finns även som quiz i Canvas. När du gjort klart labben ska du svara på reflektionsfrågorna i detta quiz. Efter att du gjort det visas kommentarer eller svarsförslag. Jämför dessa med dina svar och fråga vid labbredovisningen om det är något du undrar över.

Praktisk information

En kort introduktion till kommandorads-miljön, som är relevant för Linux, Mac, och  datorsalarna på campus, finns på sidan Om kommandoraden. (Notera att  Windows Subsystem for Linux (WSL) introducerades i Windows 10, för äldre Windows-system är  Cygwin ett alternativ.)

Kodskelett till labbarna distribueras med hjälp av versionshanteringsverktyget git. Labhäftet innehåller en kort introduktion, och länkar till dokumentation finns på sidan introduktion till git.

En debugger är ett viktigt verktyg när man utvecklar program, och speciellt i språk som C och C++ som inte har så mycket inbyggda skyddsnät eller ger detaljerad information när programmet krashar. De två debuggers som kan användas i labbarna och nämns i labbhandledningen är lldb och gdb.

Uppgifter

Labbhandledningen finns i cpplabs.pdf 

Schema för laborationsuppgifterna:

Laboration 1, Introduktion till verktygen, grundläggande C++: Läsvecka 2

Laboration 2, Introduktion till standardbiblioteket: Läsvecka 3--4

Laboration 3, Debugging: Läsvecka 5

Laboration 4, Strängar och strömmar;  felhantering; generisk programmering: Läsvecka 6--7

 

Notera att det är två labtillfällen för lab 2 och 4.

Noter

Lab 1

På vissa system (bland annat Mac med arm-processor) fungerar den "strömlinjeformade" leak sanitizer (-fsanitize=leak) inte.

leak sanitizer ingår även som en del i den större address sanitizer (-fsanitize=address). Om -fsanitize=leak inte fungerar kan du testa att bygga med -fsanitize=address.

 

Sen kan du behöva sätta miljövariablen  ASAN_OPTIONS='detect_leaks=1' för att aktivera leak sanitizer.

Till exempel, för att köra programmet leak (byggt med -fsanitize=address) med kontroll för minnesläckor aktiverad ge kommandot:

ASAN_OPTIONS='detect_leaks=1' ./leak

och omvänt kan du stänga av leak sanitizer (men behålla resten av address sanitizers kontroller) med

ASAN_OPTIONS='detect_leaks=0' ./leak

Se dokumentationen för mer detaljer. Google Sanitizers finns på https://github.com/google/sanitizers.

Lab2

Om /usr/share/dict/words inte finns på ditt system kan du använda denna filen: dict-words.txt

Alternativt kan du installera ordlistan. I Ubuntu finns ordlistan i paketet wbritish respektive or wamerican. Kommandot

sudo apt-get install wbritish (or wamerican)

installerar en ordlista under /usr/share/dict/words