TDP005. Föreläsning 2. Filip Strömbäck

Storlek: px
Starta visningen från sidan:

Download "TDP005. Föreläsning 2. Filip Strömbäck"

Transkript

1 TDP005 Föreläsning 2 Filip Strömbäck

2 1 Make och CMake 2 Versionshantering

3 TDP005 Filip Strömbäck 2 Make Problem: kompilera många filer i ett stort projekt tar tid Bättre om vi kompilerar om så få filer som möjligt! Make kan hjälpa oss!

4 TDP005 Filip Strömbäck 3 Make foo.h # pragma once int foo( int val); main.cpp #include "foo.h" # include <iostream > //... int main() { cout << foo(10) << endl; return 0; } foo.cpp #include "foo.h" int foo( int val) { return val + 1; }

5 TDP005 Filip Strömbäck 4 Make Beroenden foo.h main.cpp. foo.cpp g++ -std=c++17 -Wall *.cpp -o prog

6 TDP005 Filip Strömbäck 4 Make Beroenden foo.h main.cpp. foo.cpp prog g++ -std=c++17 -Wall *.cpp -o prog

7 TDP005 Filip Strömbäck 5 Make Beroenden foo.h main.cpp. foo.cpp g++ -c -std=c++17 -Wall main.cpp -o main.o g++ -c -std=c++17 -Wall foo.cpp -o foo.o g++ -std=c++17 main.o foo.o -o prog

8 TDP005 Filip Strömbäck 5 Make Beroenden foo.h main.cpp. foo.cpp main.o foo.o g++ -c -std=c++17 -Wall main.cpp -o main.o g++ -c -std=c++17 -Wall foo.cpp -o foo.o g++ -std=c++17 main.o foo.o -o prog

9 TDP005 Filip Strömbäck 5 Make Beroenden foo.h main.cpp. foo.cpp main.o foo.o prog g++ -c -std=c++17 -Wall main.cpp -o main.o g++ -c -std=c++17 -Wall foo.cpp -o foo.o g++ -std=c++17 main.o foo.o -o prog

10 TDP005 Filip Strömbäck 6 Make makefil Första försök: prog: foo.o main.o g++ -std=c++17 -g -Wall foo.o main.o -o prog foo.o: foo. cpp foo.h g++ -c -std=c++17 -g -Wall foo. cpp -o foo.o main.o: main. cpp foo.h g++ -c -std=c++17 -g -Wall main. cpp -o main.o

11 TDP005 Filip Strömbäck 7 Make makefil Förbättring: CXXFLAGS = -std=c++17 -g -Wall prog: foo.o main.o g++ $( CXXFLAGS) foo.o main.o -o prog foo.o: foo. cpp foo.h g++ -c $( CXXFLAGS) foo. cpp -o foo.o main.o: main. cpp foo.h g++ -c $( CXXFLAGS) main. cpp -o main.o

12 TDP005 Filip Strömbäck 8 Make makefil med.phony och clean CXXFLAGS = -std=c++17 -g -Wall prog: foo.o main.o g++ $( CXXFLAGS) foo.o main.o -o prog foo.o: foo. cpp foo.h g++ -c $( CXXFLAGS) foo. cpp -o foo.o main.o: main. cpp foo.h g++ -c $( CXXFLAGS) main. cpp -o main.o. PHONY: clean clean: rm *.o prog

13 TDP005 Filip Strömbäck 9 Make Finns mycket mer: makron, variabler, etc. Se make-laborationen för mer info.

14 TDP005 Filip Strömbäck 10 CMake CMakeLists.txt: project( prog) set( CMAKE_CXX_STANDARD 17) # set( CMAKE_CXX_FLAGS "${ CMAKE_CXX_FLAGS} -std=c++17") set( SOURCE_FILES main. cpp foo. cpp foo.h) add_executable( prog ${ SOURCE_FILES}) Kompilera: $ cmake. $ make

15 1 Make och CMake 2 Versionshantering

16 TDP005 Filip Strömbäck 12 Git Git ska användas i kursen Interaktiv genomgång: Hur används Git i större projekt?

17 TDP005 Filip Strömbäck 13 GitLab Issues GitLab har inbyggt stöd för issues. Kan användas för att hålla koll på vad som ska göras härnäst, buggar, etc. I ett commit-meddelande kan man skriva: fixes #13 Då stängs automatiskt issue #13, och en referens till den commit som stängde den läggs till.

18 TDP005 Filip Strömbäck 14 Git Hur organiseras koden i större projekt? Centralt repository Merge Rebase Feature Branch Gitflow Flera repositories Integration-Manager Workflow (Forking Workflow) Dictator and Lieutenants Workflow

19 TDP005 Filip Strömbäck 15 Git Centralt repository Repository.

20 TDP005 Filip Strömbäck 16 Git Merge origin/master C0. C1 master

21 TDP005 Filip Strömbäck 16 Git Merge origin/master C0. C1 F1 F2 master

22 TDP005 Filip Strömbäck 16 Git Merge origin/master C0. C1 C2 C3 F1 F2 master

23 TDP005 Filip Strömbäck 16 Git Merge origin/master C0. C1 C2 C3 F1 F2 C4 master

24 TDP005 Filip Strömbäck 16 Git Merge origin/master C0. C1 C2 C3 F1 F2 C4 master

25 TDP005 Filip Strömbäck 17 Git Rebase origin/master C0. C1 master

26 TDP005 Filip Strömbäck 17 Git Rebase origin/master C0. C1 F1 F2 master

27 TDP005 Filip Strömbäck 17 Git Rebase origin/master C0. C1 C2 C3 F1 F2 master

28 TDP005 Filip Strömbäck 17 Git Rebase origin/master C0. C1 C2 C3 F1 F2 F1 F2 Rebase master

29 TDP005 Filip Strömbäck 17 Git Rebase origin/master C0. C1 C2 C3 F1 F2 F1 F2 master

30 TDP005 Filip Strömbäck 17 Git Rebase origin/master C0. C1 C2 C3 F1 F2 master

31 TDP005 Filip Strömbäck 18 Git Merge och Rebase Enklaste sättet att samarbeta Fungerar bra i mindre projekt Kan inte samarbeta på funktionalitet som ej är klar Risk att master inte fungerar, problem för andra Stor feature, stora merge-konflikter

32 TDP005 Filip Strömbäck 19 Git Feature Branch master C0.

33 TDP005 Filip Strömbäck 19 Git Feature Branch feature-c master C1 C2 C3 C0.

34 TDP005 Filip Strömbäck 19 Git Feature Branch feature-c master C1 C2 C3 C0. F1 F2 F3 feature-f

35 TDP005 Filip Strömbäck 19 Git Feature Branch Merge Request feature-c master C1 C2 C3 C0. F1 F2 F3 feature-f

36 TDP005 Filip Strömbäck 19 Git Feature Branch feature-c C1 C2 C3 master C0. M1 F1 F2 F3 feature-f

37 TDP005 Filip Strömbäck 19 Git Feature Branch feature-c C1 C2 C3 master C0. M1 F1 F2 F3 feature-f Merge Request

38 TDP005 Filip Strömbäck 19 Git Feature Branch feature-c C1 C2 C3 master C0. M1 M2 F1 F2 F3 feature-f

39 TDP005 Filip Strömbäck 20 Git Feature Branch Samarbete/backup på ej klara funktionalitet Tydligt var kodgranskning görs master fungerar alltid Continuous Integration Lite mer arbete än tidigare Risk för att funktionalitet tappas bort Risk för stora merges lite funktionalitet i taget

40 TDP005 Filip Strömbäck 21 Git Gitflow master v0.1 C0. C1

41 TDP005 Filip Strömbäck 21 Git Gitflow master v0.1 C0. C1 D0 D2 D1 develop feature

42 TDP005 Filip Strömbäck 21 Git Gitflow master v0.1 C0. C1 release-0.2 D0 D2 D1 develop feature

43 TDP005 Filip Strömbäck 21 Git Gitflow master v0.1 C0. C1 R0 R1 release-0.2 D0 D2 D1 develop feature

44 TDP005 Filip Strömbäck 21 Git Gitflow master v0.1 C0. C1 R0 R1 release-0.2 D0 D2 D3 D1 develop feature

45 TDP005 Filip Strömbäck 21 Git Gitflow v0.1 master v0.2 C0. C1 C2 R0 R1 release-0.2 D0 D2 D3 D1 develop feature

46 TDP005 Filip Strömbäck 21 Git Gitflow v0.1 master v0.2 C0. C1 C2 R0 R1 release-0.2 D0 D2 D3 D4 D1 develop feature

47 TDP005 Filip Strömbäck 22 Git Gitflow Release kan testas och färdigställas parallellt med utveckling av ny funktionalitet master visar tydligt alla versioner Enkelt och tydligt att göra hotfix Ännu mer att hålla reda på, namngivning är viktig!

48 TDP005 Filip Strömbäck 23 Git Integration-Manager (Forks) Fork A Officiellt. repo Ägare

49 TDP005 Filip Strömbäck 23 Git Integration-Manager (Forks) Fork A Officiellt. repo Fork B Ägare

50 TDP005 Filip Strömbäck 23 Git Integration-Manager (Forks) Fork A Officiellt. repo Fork B Ägare

51 TDP005 Filip Strömbäck 23 Git Integration-Manager (Forks) Fork A Officiellt. repo Fork B Ägare Pull Request

52 TDP005 Filip Strömbäck 23 Git Integration-Manager (Forks) Fork A Officiellt. repo Fork B Ägare Pull Request

53 TDP005 Filip Strömbäck 24 Git Integration-Manager (Forks). Ägaren har full kontroll på vad som kommer med Pull Requests ger tydlig diskussion och genomgång av ändringar Officiellt repo innehåller få skräpgrenar Alla kommer åt sina ändringar var som helst ifrån Enkelt att tappa bort ändringar Enkelt att hamna efter officiellt repo Onödigt med flera kopior av projektet? Lite krångligare att komma igång

54 TDP005 Filip Strömbäck 25 Git Dictator and Lieutenants Dictator. Officiellt repo Lieutenant Lieutenant

55 TDP005 Filip Strömbäck 25 Git Dictator and Lieutenants Dictator. Officiellt repo Lieutenant Lieutenant

56 TDP005 Filip Strömbäck 25 Git Dictator and Lieutenants Dictator. Officiellt repo Lieutenant Lieutenant

57 TDP005 Filip Strömbäck 26 Git Dictator and Lieutenants Bra för väldigt stora projekt (Linux) Enskild ägare behöver inte kontrollera allt Lång process att få ändringar accepterade Många personer inblandade

58 Filip Strömbäck

Introduktion till Git

Introduktion till Git Introduktion till UPP-gruppen Christoffer Holm Institutionen för datavetenskap (IDA) 1 1 3 / 11 Krav på användning av i kursen, 3 / 11 Krav på användning av i kursen, Men vad är det? 3 / 11 Krav på användning

Läs mer

TDP005 Projekt: Objektorienterat system

TDP005 Projekt: Objektorienterat system . TDP005 Projekt: Objektorienterat system Laboration i Make och CMake Författare Filip Strömbäck Höstterminen 2016 Version 1.0 2016-10-04 Introduktion I denna lab kommer vi titta närmare på två verktyg

Läs mer

Versionshantering med Git. Henrik Henriksson 17 april 2018

Versionshantering med Git. Henrik Henriksson 17 april 2018 Versionshantering med Git Henrik Henriksson 17 april 2018 1 Versionshantering? rapport_v0.4.docx rapport_v0.5.pdf rapport-v1.0.cpp rapport_v1.0.docx raport_v0.9-final.docx komplettering-v2.0.docx färdig.7.pdf

Läs mer

Det finns många flaggor till g++,

Det finns många flaggor till g++, C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se Inge Frick, inge@nada.kth.se Alexander Baltsatsis hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m.

Läs mer

TDP005: Introduktion till Make

TDP005: Introduktion till Make TDP005: Introduktion till Make Jonas Lindgren jonas.lindgren@liu.se Torbjörn Lönnemark torbjorn.lonnemark@liu.se Niklas Hayer 2013-11-14 1 1 PROGRAMMET MAKE 2 1 Programmet make Om du kör make letar programmet

Läs mer

Versionshantering med Git

Versionshantering med Git Versionshantering med Git Vad, varför och hur? Magnus Nielsen Institutionen för datavetenskap, LiU magnus.nielsen@liu.se Vad ska jag ha Git till? Versionshantering Sparar källkod (eller vad som helst)

Läs mer

Versionshantering. Problem som uppstår i större (samt även mindre) projekt:

Versionshantering. Problem som uppstår i större (samt även mindre) projekt: Versionshantering Problem som uppstår i större (samt även mindre) projekt: Samtidiga ändringar. Kålle och Ada öppnar samma fil för redigering vid var sin dator. Om Kålle först sparar sina ändringar och

Läs mer

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010

Programsystemkonstruktion med C++: Övning 1. Karl Palmskog september 2010 Programsystemkonstruktion med C++: Övning 1 Karl Palmskog palmskog@kth.se september 2010 Programuppbyggnad Klassens uppbyggnad en C++-klass består av en deklaration och en definition deklaration vanligtvis

Läs mer

1 Vad är Versionshantering? 2 Git. 2.1 GitHub

1 Vad är Versionshantering? 2 Git. 2.1 GitHub 1 Vad är Versionshantering? Versionshantering (eller Version Control) är ett samlingsnamn för program som ger en användare möjlighet att komma åt tidigare versioner av dokument och spåra ändringar som

Läs mer

Mer om kodkvalitet. Mer om kodkvalitet. Hur kan man jobba med kodkvalité? Hur kan man jobba med kodkvalité? Hur kan man jobba med kodkvalité?

Mer om kodkvalitet. Mer om kodkvalitet. Hur kan man jobba med kodkvalité? Hur kan man jobba med kodkvalité? Hur kan man jobba med kodkvalité? Mer om kodkvalitet Hur kan man jobba med kodkvalité 1. Jobba strukturerat genom hela processen Skulle ni köpa/köra en bil som inte har besiktas de senaste åren, speciellt efter lagningen efter krocken

Läs mer

CVS-Introduktion. CyberRymden Introduktion till CVS,17 november (27) Marcus Rejås

CVS-Introduktion. CyberRymden Introduktion till CVS,17 november (27) Marcus Rejås Introduktion till CVS,17 november 2002 1(27) CVS-Introduktion CyberRymden 2001-10-03 Marcus Rejås $Id: slides.tex,v 1.2 2002/11/17 18:16:40 rejas Exp $ Introduktion till CVS,17 november

Läs mer

grundläggande C++, funktioner m.m.

grundläggande C++, funktioner m.m. C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m. ett exempel Ett enkelt program i C++, hello.cpp #include

Läs mer

Introduktion till git

Introduktion till git Introduktion till git Anders Engström 23 februari 2012 1 / 27 Översikt Introduktion I en värld utan versionshantering Typer av versionshantering Detta är git Komma igång med git Förberedelser Eget repository

Läs mer

TDP005, Projekt: Objektorienterade System. Laboration: Eclipse

TDP005, Projekt: Objektorienterade System. Laboration: Eclipse TDP005, Projekt: Objektorienterade System Laboration: Eclipse Höstterminen 2013 Introduktion Detta material innehåller övningar för Eclipse. Redovisning Dessa övningar behöver inte redovisas, men ni får

Läs mer

Ett enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << "Hello World\n"; return 0; } C++, Övning 1

Ett enkelt program i C++, hello.cpp. #include <iostream> int main() { std::cout << Hello World\n; return 0; } C++, Övning 1 Ett enkelt program i C++, hello.cpp C++, Övning 1 Jonas Sjöbergh, jsh@nada.kth.se hur man kompilerar och kör make preprocessor minnesallokering, pekare grundläggande C++, funktioner m.m. ett exempel int

Läs mer

Programmering i C++ Kompilering från kommandoraden

Programmering i C++ Kompilering från kommandoraden Programmering i C++ Kompilering från kommandoraden Sven Gestegård Robertz Datavetenskap, LTH 9 november 2015 Sammanfattning Ibland vill man, av olika anledningar, inte använda en stor integrerad utvecklingsmiljö

Läs mer

Programsystemkonstruktion med C++

Programsystemkonstruktion med C++ Programsystemkonstruktion med C++ Övning 1 Daniel Aarno bishop@kth.se Översikt övning 1 Kompilering och länkning Makefile Preprocessordirektiv Funktioner Funktionen main() Datatyper Minneshantering Pekare

Läs mer

Första exemplet. Kompilator & länkare. Projekt. Övning 1, Ögrupp 4, Programsystemkonstruktion med C++, Ronnie Johansson,

Första exemplet. Kompilator & länkare. Projekt. Övning 1, Ögrupp 4, Programsystemkonstruktion med C++, Ronnie Johansson, Övning 1, Ögrupp 4, Programsystemkonstruktion med C++, 2003 09 11 Ronnie Johansson, rjo@nada.kth.se Vi kommer att titta på: Kompilering och länkning make och Makefile Preprocessordirektiv main() funktionen

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Underprogram - Funktioner Eric Elfving Institutionen för datavetenskap 18 september 2014 Översikt 2/22 Återblick till satsblocken Funktioner - Namngivna satsblock

Läs mer

TDP003. Föreläsning 2. Filip Strömbäck

TDP003. Föreläsning 2. Filip Strömbäck TDP003 Föreläsning 2 Filip Strömbäck 1 Kursinformation 2 Projektplan 3 Frågor 4 Genomgång av projekt 5 Vad är ett API? 6 Kom ihåg TDP003 Filip Strömbäck 2 Vad händer härnäst? V37 V38 V39 V40 Planeringsdokument

Läs mer

TDP005, Projekt: objektorienterade system

TDP005, Projekt: objektorienterade system TDP005, Projekt: objektorienterade system Laboration: Eclipse Höstterminen 2011 Introduktion Detta material innehåller övningar för Eclipse. Redovisning Dessa övningar behöver inte redovisas, men ni får

Läs mer

TDP005, Projekt: Objekt-orienterade System. Laboration: Eclipse

TDP005, Projekt: Objekt-orienterade System. Laboration: Eclipse TDP005, Projekt: Objekt-orienterade System Laboration: Eclipse Höstterminen 2013 Introduktion Detta material innehåller övningar för Eclipse. Redovisning Dessa övningar behöver inte redovisas, men ni får

Läs mer

TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap

TDP004. Minne och pekare. Eric Elfving Institutionen för datavetenskap TDP004 Minne och pekare Eric Elfving Institutionen för datavetenskap 1 / 23 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor 2 / 23 Internminne - RAM Datorns internminne (RAM,

Läs mer

Tekniskt system för Lean Startup

Tekniskt system för Lean Startup Tekniskt system för Lean Startup Målet med kursen är att ni ska lära er om att bygga ett sådant system Detta gör vi i tillämpat format ny bygger en app för att lära er om den processen System (som CI,

Läs mer

IDA kursmaterial Informationsblad make. make

IDA kursmaterial Informationsblad make. make make make är ett verktyg som främst används för att underhålla, uppdatera och återskapa program och filer. Det är dock ett generellt verktyg som kan användas även i många andra sammanhang. En avancerad

Läs mer

Tfn Telephone 026-54 66 86 Kontr Checked. Revisionshistoria Revision history Rev Namn Name Datum Date Ändring Change

Tfn Telephone 026-54 66 86 Kontr Checked. Revisionshistoria Revision history Rev Namn Name Datum Date Ändring Change Utilator 1(20) isionshistoria ision history Namn Name Ändring Change A3 2001-10-24 Ändrade i stycket om CVSROOT. Vi använder ssh nu och inte pserver. 2000-08-30 Ändrade i stycket om CVSROOT. Jag hade felaktigt

Läs mer

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer Pekare och Listor Eric Elfving Institutionen för datavetenskap 1 / 21 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor 2 / 21 Internminne

Läs mer

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer Pekare och Listor Eric Elfving Institutionen för datavetenskap 1 / 20 Översikt Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor 2 / 20 Internminne

Läs mer

Code-Lite tutorial ( /RoJ)

Code-Lite tutorial ( /RoJ) Code-Lite tutorial (2013-03-20/RoJ) Följ dessa anvisningar för att skapa projekt, kompilera/länka och testa dina laborationsuppgifter 3,4. Project Projekt, innehåller bland annat ett antal källtextfiler

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Pekare och Listor Eric Elfving Institutionen för datavetenskap 31 oktober 2014 Översikt 2/41 Internminne Pekare Dynamiska datastrukturer (Enkellänkade) listor Arbeta

Läs mer

En klass behöver både deklaration och definition. Daniel Aarno Globala funktioner och variabler är OK.

En klass behöver både deklaration och definition. Daniel Aarno Globala funktioner och variabler är OK. 2 1 0 / ) - & 9 > ; 7 * ( ) ) En klass behöver både deklaration och definition Deklaration i h (hh) och definition i cc (cpp) Private är förvalt Student::learn() Student::Student() Student::~Student()

Läs mer

Grundläggande termer. Några olika system. F11 Grunderna i Versionshantering. Git basic. Origin. Git basic. Git basic. Local #1. Local #3.

Grundläggande termer. Några olika system. F11 Grunderna i Versionshantering. Git basic. Origin. Git basic. Git basic. Local #1. Local #3. Grundläggande termer F11 Grunderna i Versionshantering Hålla koll på olika version, kunna gå tillbaka, etc. Repo/Repository - förvaring/administrering av förändringar Centraliserad/Decentraliserad Lokal

Läs mer

Versionshantering. Jan Erik Moström

Versionshantering. Jan Erik Moström Versionshantering Jan Erik Moström Johan Eliasson Versionssystem Gjorda för att användas av en eller flera personer på en eller flera platser, exempelvis: För en ensam användare som jobbar med ett projekt

Läs mer

Börja med git och GitHub - Windows

Börja med git och GitHub - Windows Börja med git och GitHub - Windows Varför git och GitHub? Git är ett s.k. versionshanteringssystem. Det är ett sätt att hålla ordning på ändringar filer. Genom att använda versionshantering förståndigt,

Läs mer

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Tentamen i TDP004 Objektorienterad Programmering Praktisk del Tentamen i TDP004 Objektorienterad Programmering Praktisk del Datum: 2011-08-22 Tid: 14-18 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 281456 Jourhavande kommer att besöka skrivsalarna ungefär

Läs mer

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Tentamen i TDP004 Objektorienterad Programmering Praktisk del Tentamen i TDP004 Objektorienterad Programmering Praktisk del Datum: 2011-04-28 Tid: 08-12 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 281456 Jourhavande kommer att besöka skrivsalarna ungefär

Läs mer

JUnit. Junit Unit Testing. JUnit 3. JUnit 3 forts. Villkorskontroller i test. Exempel JUnit3

JUnit. Junit Unit Testing. JUnit 3. JUnit 3 forts. Villkorskontroller i test. Exempel JUnit3 Johan Eliasson JUnit Junit Unit Testing Unit testing för java Används för att testa att metoder/klasser beter sig som det var tänkt Många IDE:er tex Eclipse har inbyggt stöd för detta. JUnit 3 Vi skriver

Läs mer

TDP005. Föreläsning 1. Filip Strömbäck

TDP005. Föreläsning 1. Filip Strömbäck TDP005 Föreläsning 1 Filip Strömbäck 1 Kursinformation 2 Mjukvaruprojekt 3 Metoder 4 Kravspecifikation 5 Systemdesign och OOP 6 Testning 7 Kom ihåg TDP005 Filip Strömbäck 2 TDP004 och TDP005 TDP005 Filip

Läs mer

tentamensdags och lab 3

tentamensdags och lab 3 tentamensdags och lab 3 Större program delas normalt upp i flera filer/moduler vilket har flera fördelar: Programmets logiska struktur när man klumpar ihop funktioner som hör ihop (och ibland också struct-def

Läs mer

Hur man kompilerar och kör IT++-program med MinGW. 1 Sammanfattning. 2 Om dokumentet. 3 Om min konfiguration

Hur man kompilerar och kör IT++-program med MinGW. 1 Sammanfattning. 2 Om dokumentet. 3 Om min konfiguration 1 (12) Hur man kompilerar och kör IT++-program med MinGW 1 Sammanfattning Detta dokument visar hur man lätt (med några få extra raders kod) kan få IT++ att bli kompatibelt med kompilatorn MinGW. Med den

Läs mer

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser

Innehåll. Introduktion till objektorientering. OOP (objektorienterad programmering) Objekt, instanser, klasser Föreläsning 1 Innehåll Introduktion till objektorientering OOP (objektorienterad programmering) Objekt, instanser, klasser C++ OO i C++ Standardbibliotek Utökningar från C (syntaktiskt socker) Introduktion

Läs mer

Emacs. Eric Elfving Institutionen för Datavetenskap (IDA)

Emacs. Eric Elfving Institutionen för Datavetenskap (IDA) Emacs Eric Elfving Institutionen för Datavetenskap (IDA) Emacs Utveckas konstant, från 70-talet Är en texteditor (inte ordbehandlare) och fokuserar på texten, inte utseendet. Ingår i GNU-projektet Har

Läs mer

Agil användbarhetsutveckling för handhållna enheter. Per Lind

Agil användbarhetsutveckling för handhållna enheter. Per Lind Agil användbarhetsutveckling för handhållna enheter Per Lind perli379@student.liu.se per.lind@inspireit.se Laboration Pass 1: Tors. 4:e feb 13-17 Pass 2: Tors. 18:e feb 13-17 Uppgift: Skapa en app för

Läs mer

Övningar Lektion3 Avancerade Webbteknologier 2

Övningar Lektion3 Avancerade Webbteknologier 2 Övningar Lektion3 Avancerade Webbteknologier 2 Del 1: C#, Linq, Generics, Delegates Linq är väldigt centralt för en datadriven webbsida. I Backend-koden så blir det lätt väldigt mycket Linq-uttryck för

Läs mer

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen

C++ Funktioner 1. int summa( int a, int b) //funktionshuvud { return a+b; //funktionskropp } Värmdö Gymnasium Programmering B ++ Datainstitutionen C++ Funktioner 1 Teori När programmen blir större och mer komplicerade är det bra att kunna dela upp programmet i olika delar som gör specifika saker, vilket kan göra programmet mer lättläst. Ett sätt

Läs mer

TDIU01 (725G67) - Programmering i C++, grundkurs

TDIU01 (725G67) - Programmering i C++, grundkurs . TDIU01 (725G67) - Programmering i C++, grundkurs Program, datatyper och IO Eric Elfving Institutionen för datavetenskap 7 oktober 2015 Översikt 2/14 Struktur på ett C++-program Köra ett program Variabler

Läs mer

prog: prog.c gcc -g -Wall prog.c /usr/local/bib/c/58an/modules/modul.o -o prog

prog: prog.c gcc -g -Wall prog.c /usr/local/bib/c/58an/modules/modul.o -o prog DSV Sid 1(10) *:58/ID100V Jozef Swiatycki Innehållsförteckning Inledning... 1 Raddelning, kommentarer, macros och inkludering... 4 Undertryckning av utskrifter från make... 6 Flera kommandon per mål...

Läs mer

TDP005. Föreläsning 1. Filip Strömbäck

TDP005. Föreläsning 1. Filip Strömbäck TDP005 Föreläsning 1 Filip Strömbäck 1 Kursinformation 2 Mjukvaruprojekt 3 Kravspecifikation 4 Metoder 5 Systemdesign och OOP 6 Testning 7 Kom ihåg TDP005 Filip Strömbäck 2 Personal Examinator Kursledare

Läs mer

Tentamen i DD2387 Programsystemkonstruktion med C++

Tentamen i DD2387 Programsystemkonstruktion med C++ Tentamen i DD2387 Programsystemkonstruktion med C++ Resultat: Datum: Tisdag 19 oktober 2010, 14-18 (rättning 18-19) sal: id: Hjälpmedel: En eller två valfria läroböcker om C++ Tid: 4 timmar Skriv inte

Läs mer

Labb 1: Vad, hur, och varför?

Labb 1: Vad, hur, och varför? Labb 1: Vad, hur, och varför? jonas.kvarnstrom@liu.se 2017 "En sak i taget": Öva grunder innan det blir mer komplicerat Starkt önskemål från studenter: Prova på kontrollstrukturer Labb 1: Intro till grunder

Läs mer

Tillämpad programmering

Tillämpad programmering Tillämpad programmering C++ make, configure och arrayer Johan Montelius 1 C++ sndcopy.cc #include #include sndreader.h #incldue sndwrite.h int main(int argc, char *argv[]) { 2 C++ sndreader.h #include

Läs mer

Subversion. Laboration. Höstterminen 2008 r81. Ronny Kuylenstierna

Subversion. Laboration. Höstterminen 2008 r81. Ronny Kuylenstierna Subversion Laboration Höstterminen 2008 Ronny Kuylenstierna @ida.liu.se svn-labb 2 [...] Subversion can be used to manage changes to any sort of information images, music, databases, documentation, and

Läs mer

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p

Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Programmering i C++ En manual för kursen Datavetenskaplig introduktionskurs 5p Skriven av Michael Andersson Introduktion Programmering I högnivåspråk fokuserar på själv problemet (algoritmen) istället

Läs mer

RFC 6106-stöd i Router Advertisment-klienten radns. Michael Cardell Widerkrantz mc@hack.org

RFC 6106-stöd i Router Advertisment-klienten radns. Michael Cardell Widerkrantz mc@hack.org RFC 6106-stöd i Router Advertisment-klienten radns Michael Cardell Widerkrantz mc@hack.org 24 augusti 2011 Innehåll Inledning................................... 2 Mål......................................

Läs mer

Modul 3 - Modularisering

Modul 3 - Modularisering Modul 3 Modularisering MODULARISERING 2 FUNKTIONER 3 Funktionsdefinition 4 Funktionsanrop 5 Funktionskroppen 5 Slumpa funktionen rand() 6 Värdeanrop 6 Variablers räckvidd 8 Referensanrop 8 DELPROGRAM 10

Läs mer

GIT som alternativ till CVS/SVN i agila utvecklingsmiljöer

GIT som alternativ till CVS/SVN i agila utvecklingsmiljöer 1 GIT som alternativ till CVS/SVN i agila utvecklingsmiljöer Kristofer Jacobson, Patrick Ivarsson Abstrakt En studie om versionshanteringssystemet Git och om möjligheten att använda det som alternativ

Läs mer

1 Klasser och objektorientering Vad är objektorientering?

1 Klasser och objektorientering Vad är objektorientering? 1 Klasser och objektorientering Vad är objektorientering? Det finns olika synsätt på programmering, dessa olika synsätt kallas för paradigm. De vanligaste paradigmen är det imperativa/proceduriella, det

Läs mer

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock

Inledning. Vad är ett datorprogram, egentligen? Olika språk. Problemlösning och algoritmer. 1DV433 Strukturerad programmering med C Mats Loock Inledning Vad är ett datorprogram, egentligen? Olika språk Problemlösning och algoritmer 1 (14) Varför använda en dator? Genom att variera de program som styr datorn kan den användas för olika uppgifter.

Läs mer

Föreläsning 7. Tobias Wrigstad. Versionshantering med git

Föreläsning 7. Tobias Wrigstad. Versionshantering med git Föreläsning 7 Tobias Wrigstad Versionshantering med git Arbetsflöde: $ git add file.c file.h $ git commit -m Explanatory message 1 2 https://git-scm.com/book/en/v2/getting-started-git-basics M 1 M 1 M

Läs mer

Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.

Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer. Föreläsning 9 Innehåll Mer om rekursion söndra-och-härska-algoritmer dynamisk programmering backtracking Orientering om versionshantering med git Söndra och härska Divide and conquer teknik för att konstruera

Läs mer

Innehållsförteckning. Exempel. Åtkomst & användarhandledning

Innehållsförteckning. Exempel. Åtkomst & användarhandledning Framsidan Framsidan på din labrapport kan du utforma ganska fritt. Tänk bara på att den ska vara läsbar, och innehålla (minst) följande information: Ditt namn Din e-mail adress här på CS! Kursens namn

Läs mer

Programsystem konstruktion med C++ (2D1387) Innehåll. övning 2 klasser och arv

Programsystem konstruktion med C++ (2D1387) Innehåll. övning 2 klasser och arv Programsystem konstruktion med C++ (2D1387) övning 2 klasser och arv Ronnie Johansson rjo@nadakthse grupp 4 2003 09 25 Innehåll Klasskonstruktorer och initieringslistor Klassdestruktorer Åtkomstkontroll

Läs mer

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33

Programmering i C++ EDA623 Objektorienterad programutveckling. EDA623 (Föreläsning 5) HT 2013 1 / 33 Programmering i C++ EDA623 Objektorienterad programutveckling EDA623 (Föreläsning 5) HT 2013 1 / 33 Objektorienterad programutveckling Innehåll Grundläggande begrepp Relationer mellan objekt Grafisk representation

Läs mer

Filhanterare med AngularJS

Filhanterare med AngularJS Filhanterare med AngularJS Författare: Filip Johansson Peter Emilsson Oskar Georgsson Christian Nilsson Datum: 2014-03-26 1 Sammanfattning Filhanterare med AngularJS är en filhanterare skapad för Sigma

Läs mer

Operativsystem (IS1350) :00-12:00

Operativsystem (IS1350) :00-12:00 Operativsystem (IS1350) 2017-03-15 08:00-12:00 Namn: Instruktioner Betyg Du får endast ha med dig skrivmateriel. Mobiler etc skall lämnas till tentamensvakterna. Svaren skall lämnas på dessa sidor, använd

Läs mer

TDIU01 - Programmering i C++, grundkurs

TDIU01 - Programmering i C++, grundkurs TDIU01 - Programmering i C++, grundkurs Sammanfattning period 1 Eric Elfving Institutionen för datavetenskap 1 oktober 2013 Översikt Ett C++-programs uppbyggnad Variabler Datatyper Satser Uttryck Funktioner

Läs mer

Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer.

Föreläsning 9 Innehåll. Söndra och härska. Fibonaccitalen. Söndra och härska. Divide and conquer teknik för att konstruera rekursiva algoritmer. Föreläsning 9 Innehåll Mer om rekursion söndra-och-härska-algoritmer dynamisk programmering backtracking Orientering om versionshantering med git Söndra och härska Divide and conquer teknik för att konstruera

Läs mer

TDDD80 Mobila och sociala applika1oner. Kursintroduk1on

TDDD80 Mobila och sociala applika1oner. Kursintroduk1on TDDD80 Mobila och sociala applika1oner Kursintroduk1on Personal Kursansvarig, föreläsare, seminarieledare Rita Kovordanyi Labbansvarig, föreläsare, seminarieledare Anders Fröberg

Läs mer

Övningar Dag 2 En första klass

Övningar Dag 2 En första klass Kurs i C++ Sid 1 (5) Övningar Dag 2 En första klass Denna övning går ut på att steg för steg bygga upp en klass och skapa objekt. Vi kommer att utgå från en sammansatt datatyp i en struct och parallellt

Läs mer

Vad händer när man kör ett program? Program och processer. Funktionsanrop. Avsluta programmet

Vad händer när man kör ett program? Program och processer. Funktionsanrop. Avsluta programmet Vad händer när man kör ett program? Program och processer När man kompilerar ett program och sedan länkar ihop det så stoppar länkaren in lite extra kod i programmet. Det är denna kod som i sin tur anropar

Läs mer

TDDI02. På denna föreläsning: Programmeringsprojekt, Föreläsning 3. Filip Strömbäck. Verifikation, validering och testning

TDDI02. På denna föreläsning: Programmeringsprojekt, Föreläsning 3. Filip Strömbäck. Verifikation, validering och testning TDDI02 Programmeringsprojekt, Föreläsning 3 Filip Strömbäck Med utgångspunkt i tidigare slides av Jonas Lindgren På denna föreläsning: Verifikation, validering och testning Begreppsdistinktioner Lite populistiskt

Läs mer

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap

Objektorientering - Arv och polymorfi. Eric Elfving Institutionen för datavetenskap Objektorientering - Arv och polymorfi Eric Elfving Institutionen för datavetenskap 1 / 25 Med hjälp av arv kan vi bryta ut saker som är gemensamt hos flera klasser. Vi får också möjlighet att referera

Läs mer

TDDC76 - Programmering och Datastrukturer

TDDC76 - Programmering och Datastrukturer TDDC76 - Programmering och Datastrukturer Objektorientering - Arv och polymorfi Eric Elfving Institutionen för datavetenskap 1 / 25 Med hjälp av arv kan vi bryta ut saker som är gemensamt hos flera klasser.

Läs mer

TDP003 Projekt: Egna datormiljön

TDP003 Projekt: Egna datormiljön . TDP003 Projekt: Egna datormiljön Egen utvecklingsmiljö Kursmaterial till kursen TDP003 Höstterminen 2017 Version 2.2 2017-06-30 2017-06-30 Egen utvecklingsmiljö INNEHÅLL Innehåll 1 Revisionshistorik

Läs mer

Bryt ut logiken för att göra Bulk-ersättning av Category i Index i ProductControllern.

Bryt ut logiken för att göra Bulk-ersättning av Category i Index i ProductControllern. Lektion 13 Övningar TDD Bryt ut logiken för att göra Bulk-ersättning av Category i Index i ProductControllern. Målet är inte att du skall komma fram till exakt samma lösning som jag kom fram till. Målet

Läs mer

Introduktionslaboration

Introduktionslaboration TDDC76 Laborationshandledning 1 TDDC76 Programmering och datastrukturer Introduktionslaboration Denna introduktionslaboration introducerar programmeringsspråket C++, hur du skriver enkla C++-program samt

Läs mer

Platina och kvalité. Rasmus Staberg, Teknisk direktör, 2014-04-08

Platina och kvalité. Rasmus Staberg, Teknisk direktör, 2014-04-08 Formpipe Platina och kvalité Rasmus Staberg, Teknisk direktör, 2014-04-08 04 08 1 Formpipe Presentation Bakgrund Platina släpptes som första release år 2000. Fick pris för Best in show från Bill Gates

Läs mer

TDDD80 Mobila och sociala applikationer. Kursintroduktion

TDDD80 Mobila och sociala applikationer. Kursintroduktion TDDD80 Mobila och sociala applikationer Kursintroduktion Personal Kursansvarig, föreläsare, seminarieledare Rita Kovordanyi Labbansvarig, föreläsare, seminarieledare Anders Fröberg

Läs mer

Lab1 Introduktion. 1 Syfte. 2 Innehåll Win32API Skapa trådar Kritiska sektioner Mailslothantering. 3 Förberedelse & Tips

Lab1 Introduktion. 1 Syfte. 2 Innehåll Win32API Skapa trådar Kritiska sektioner Mailslothantering. 3 Förberedelse & Tips Lab1 Introduktion Förberedelse för planetlabben genom att kapsla in (skapa wrappers) systemanrop. 1 Syfte Få en känsla av hur Win32API fungerar, dvs programmerarens interface gentemot Windows. Känsla för

Läs mer

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen

Läs mer

Introduktion till Git Anton Ekberg Version 2

Introduktion till Git Anton Ekberg Version 2 DAT055 - Objektorienterade appikationer Introduktion till Git Anton Ekberg ekberga@student.chalmers.se Version 2 Innehåll 1 Introduktion 1 1.1 Terminalen i Linux.......................................

Läs mer

TDP002 Imperativ programmering. Laborationsmaterial emacs python-mode

TDP002 Imperativ programmering. Laborationsmaterial emacs python-mode TDP002 Imperativ programmering Laborationsmaterial emacs python-mode Höstterminen 2008 Innehållsförteckning Introduktion...3 Redovisning av laborationer...3 Laboration 1 emacs python-mode...4 Uppgift 1

Läs mer

Insidan av ett Open Source projekt. Nicklas Avén

Insidan av ett Open Source projekt. Nicklas Avén Insidan av ett Open Source projekt. Nicklas Avén Innehåll * Vem är jag * Hur jag började involvera mig i PostGIS * Hur koordineras utvecklingen i PostGIS Vem är jag? * Nicklas Avén * Bor i Norge * Jobbar

Läs mer

TDP003. Föreläsning 1. Filip Strömbäck

TDP003. Föreläsning 1. Filip Strömbäck TDP003 Föreläsning 1 Filip Strömbäck 1 Kursinformation 2 Om IP-projekt 3 Projekt 4 Portfoliosystemet 5 ABC i social kompetens 6 Sammanfattning TDP003 Filip Strömbäck 2 Kursinformation Du hittar all information

Läs mer

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY

Grunderna i C++ T A. Skapad av Matz Johansson BergströmLIMY Grunderna i C++ ARK 385: Virtuella Verktyg i en Materiell värld AT Arkitektur & Teknik Chalmers Tekniska Högskola 2009 - Kursen skapades (3 förel.) 2010-6 förel. + 2 projekt 2011-8 förel. Helt omarbetade

Läs mer

Server-kod. TDDD80 Mobila och sociala applikationer

Server-kod. TDDD80 Mobila och sociala applikationer Server-kod 2017-01-16 2 Översikt Flask HTTP och REST Requests-biblioteket JSON PyCharm Git Informationssökningstips 2017-01-15 3 Klient Klient Klient Labb 4-8 (Android) Server Databas Labb 1-4 (server)

Läs mer

Så här skriver du ditt första program i C++

Så här skriver du ditt första program i C++ Så här skriver du ditt första program i C++ Introduktion till att skapa Solution, Project och källkodsfil i Visual Studio 2013 Författare Anne Norling Kurs: Strukturerad programmering med C++ Kurskod:1DV433

Läs mer

Programsystemkonstruktion med C++

Programsystemkonstruktion med C++ Programsystemkonstruktion med C++ Övning 2 Daniel Aarno bishop@kth.se Översikt övning 2 Klasser Konstruktorer Destruktorer Arv Virtuella funktioner Abstrakta klasser Operatorer Templateklasser Templatefunktioner

Läs mer

Fö 2 TSEA81 Datorteknik och realtidssystem

Fö 2 TSEA81 Datorteknik och realtidssystem Fö 2 TSEA81 Datorteknik och realtidssystem Shared Resources Shared resources En gemensam resurs är något som används av en eller flera processer. Det kan t ex var: Data: variabel, buffer, databas Hårdvara:

Läs mer

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp

Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Laboration 3 HI1024, Programmering, grundkurs, 8.0 hp Dataingenjörsprogrammet, elektroingenjörsprogrammet och medicinsk teknik KTH Skolan för Teknik och Hälsa Redovisning: Se Kurs-PM om hur redovisningen

Läs mer

Systemutveckling i praktiken

Systemutveckling i praktiken Systemutveckling i praktiken Peter Vi är Peter och Olov och kommer från Codemill. Codemill är: - Design- och utvecklingsföretag i Umeå - Ca 50 personer - Specialiserade på videoteknik - Våra kunder är

Läs mer

C++ Slumptalsfunktioner + switch-satsen

C++ Slumptalsfunktioner + switch-satsen C++ Slumptalsfunktioner + switch-satsen Veckans avsnitt består av ett antal lite udda funktioner man kan ha nytta av när man skriver program. Det är en slumptalsgenerator och lite annat smått och gott.

Läs mer

Innehåll. EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Viktiga skillnader mot Java

Innehåll. EDAf30: Programmering i C++, 7.5 hp. EDAf30: Programmering i C++, 7.5 hp Viktiga skillnader mot Java Innehåll EDAF30 Programmering i C++ 1. Introduktion 1 Om kursen Sven Gestegård Robertz Datavetenskap, LTH 2016 2 Presentation av C++ Historik Inledning Datatyper och variabler 1. Introduktion 2/1 Viktiga

Läs mer

DRAFT. CVS kurs laboration 1 Checka in, ut och uppdatera. Marcus Rejås. 17 november 2002

DRAFT. CVS kurs laboration 1 Checka in, ut och uppdatera. Marcus Rejås. 17 november 2002 CVS kurs laboration 1 Checka in, ut och uppdatera Marcus Rejås 17 november 2002 Innehåll 1 Inledning 1 2 Förberedelser (om du skall köra CVS på en remote server) 1 2.1 Installera CYGWIN......................................

Läs mer

Tentamen i TDP004 Objektorienterad Programmering Praktisk del

Tentamen i TDP004 Objektorienterad Programmering Praktisk del Tentamen i TDP004 Objektorienterad Programmering Praktisk del Datum: 2010-04-07 Tid: 8-12 Plats: SU-salar i B-huset. Jour: Per-Magnus Olsson, tel 285607 Jourhavande kommer att besöka skrivsalarna ungefär

Läs mer

Proj-Iteration 5B. Plan för återstående iterationer

Proj-Iteration 5B. Plan för återstående iterationer Proj-Iteration 5B PVG/Coaching Boris Magnusson Datavetenskap LTH PVG/Coach 2009. Proj-Iter5B : 1 Plan för återstående iterationer Förutom att arbeta vidare på stories skall release göras både under iteration

Läs mer

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT 2013 1 / 42

Programmering i C++ EDA623 Arv. EDA623 (Föreläsning 6) HT 2013 1 / 42 Programmering i C++ EDA623 Arv EDA623 (Föreläsning 6) HT 2013 1 / 42 Arv Innehåll Härledda klasser Konstruktorer och destruktorer vid arv Tillgänglighet Polymorfism och dynamisk bindning Abstrakta klasser

Läs mer

UPPDATERA DIN UNICO-ORGELS OPERATIVSYSTEM!

UPPDATERA DIN UNICO-ORGELS OPERATIVSYSTEM! UPPDATERA DIN UNICO-ORGELS OPERATIVSYSTEM! Motorn i din UNICO-orgel är en LINUX-dator med programvara i form av ett operativsystem. Denna programvara förbättras ständigt och du bör därför uppgradera den.

Läs mer

SgLib Simple Graphics Library

SgLib Simple Graphics Library SgLib Simple Graphics Library SgLib är en förenkling av glut som I sin tur bygger på open GL. Om du inte känner till glut och open GL, räcker det att veta att sglib är en samling filer som gör det lättare

Läs mer

Goda råd från studenterna som gjorde kandidatprojektet 2018

Goda råd från studenterna som gjorde kandidatprojektet 2018 Goda råd från studenterna som gjorde kandidatprojektet 2018 Strukturera tiden och se till att komma igång tidigt i kursen. Det är en väldigt intensiv period när sommaren närmar sig och det är inte till

Läs mer