Skip to content

Latest commit

 

History

History
259 lines (151 loc) · 17.1 KB

File metadata and controls

259 lines (151 loc) · 17.1 KB
title Programvaruteknik

Innehållsförteckning

{:.no_toc}

  • TOC {:toc}

Inledande tips

  • Se till att vidarebefordra din studentmejl till din vanliga mejl, så att du inte missar något viktigt! Logga in med dittanvändarnamn@student.miun.sehttps://mail.google.com/ och ändra i inställningarna.
  • Gå med i Programvaruteknik på Discord (OBS: endast för studenter)
  • Ta Git på allvar - se till att förstå hur versionshanteringen via Git fungerar och slipp panik. Arbeta metodiskt och noggrant, det går ej att köra git status för många gånger.

Kurslitteratur

Elektroniskt

Biblioteket som har ungefär allt: Library Genesis (googla).

Är LibGen blockerad? Byt till en DNS-server som inte tvingats ljuga för dig, så kommer det förmodligen att fungera. Det finns många öppna sådana. De som tillhandahålls av Google (8.8.8.8 och 8.8.4.4) och Cloudflare (1.1.1.1) har lättihågkomliga IP-adresser.

När LibGen sviker finns även:

Döda träd

Lån, campusstudenter: universitetsbiblioteket

Lån, student ej i Östersund men i Sverige: KB:s tjänst Libris vet vad som finns var

Köpa: Många böcker finns väldigt billigt begagnade på Abebooks

Adlibris och Bokus har studentrabatt via Mecenat.

Skriva referenser

Många kurser saknar moment som involverar akademiskt skrivande, men när det väl gäller är det IEEE-stil som används:

Sök efter ieee citation style för massor av fler guider och exempel.

Zotero (som kan integreras med LibreOffice) kan vara nyttigt. Institutionen har i skrivande stund ODT-mallar som standard...

Ställa frågor

Att köra fast när du programmerar är inget konstigt. Var inte rädd för att ställa frågor. Men tänk på hur du ställer frågor! Var inte rädd för att visa kod. Ge tillräckligt mycket information för att folk ska ha en sportslig chans att faktiskt kunna hjälpa dig, annars blir det lätt en tidsödande gissningslek. Se t.ex. How to create a Minimal, Reproducible Example.

Har du ett GitHub-konto kan du klistra in kod i en gist och länka (gists kan tas bort senare). Annars kan du använda någon pastebin-sajt (https://hastebin.com/, https://paste.ubuntu.com/ osv).

Mindre kodsnuttar kan du posta direkt på Discord. Se till att omge dem med tre backticks - ``` - före och efter. T.ex.:

```
kod kod kod
kod kod kod
```

För syntax highlighting kan du även ange språk. T.ex.:

```cpp
std::cout << "C++-kod weee" << std::endl;
return 0;
```

Vilket då kommer visas som:

std::cout << "C++-kod weee" << std::endl;
return 0;

Mjukvara

IDE:er och texteditorer

JetBrains har en mängd populära IDE:er för olika språk (C++, Java, PHP, JavaScript, Python, etc). De funkar alla på såväl Linux och Windows som Mac. Kostar normalt $$, MEN är gratis för studenter (använd din studentepostadress när du skapar konto). Särskilt för Python (Pycharm) och Javaprogrammering (IntelliJ IDEA) från Jetbrains att rekommendera.

Sublime Text (Linux/Windows/Mac) är ett trevligt alternativ om din dator krackelerar under tyngden av JetBrains-programmen. Proprietärt, men obegränsad trial.

vim och Emacs är fria, finns för alla plattformar under solen, har funnits i flera decennier och stora skaror fanatiska användare. Spacemacs för de två religionerna samman en smula: Emacs med Vim-keybindings per default.

Visual Studio Code (Linux/Windows/Mac) är ett snabbt och smidigt open-source alternativ som erbjuder många funktioner som traditionellt sett inte finns i texteditorer, som t.ex inbyggd terminal och stöd för versionskontroll. Visual Studio Code med Live Server, ESlint, Prettier och Stylelint är en stabil kombination för webbutveckling.

Language Server Protocol

Language Server Protocol är ett protokoll där tanken är att olika editors ska kunna ta del av samma språkverktyg och stöds av ex Microsoft, IBM, Red Hat, Facebook mfl. Principen är ganska enkel, i editorn installerar du ett plugin som fungerar som klient, sedan installerar du en server för de programspråk du använder i ditt operativsystem. Klienten använder då aktuell server för att implementera de funktioner som stöds av servern. Det gör att ex även Vim, Emacs, Sublime Text etc på ett enkelt sätt kan använda funktionalitet ifrån projekt med stort stöd inom respektive community. Se länken ovan för klient-/serveralternativ för olika editors och språk.

Förslag på klienter till vim

Plug-and-play lösningar som inte kräver så mycket konfiguration

För en lättviktsvariant som kräver lite konfigurering för varje språk

Samtliga klienter ovan är ganska väldokumenterade och har ett ganska stort antal användare.

Linux

Vilken som helst av de stora, vanligt förekommande distributionerna (Ubuntu / Mint / Debian, Fedora, Arch, osv. etc.) funkar bra för allt du kommer behöva göra under programmet. Senaste LTS-versionen av Ubuntu (LTS = long term support) är standardtipset: lätt att komma ihång med och populärast (så lätt att googla problem).

Att ha en dator med enbart Linux är rekommenderat (eller dual-boota om du orkar mecka). Annars kan du använda VirtualBox (Linux/Mac/Windows), men det kommer att gå segare. Ett annat alternativ, om du kör Windows, är Windows Subsystem for Linux.

Användbara länkar för olika programmeringsspråk

Allmänt

C++

  • Cppreference - Väldigt användbar referens för C++ och standard biblioteket. Ibland lämnar sökfunktionen en del att önska. Om du inte hittar det du söker så använd en vanlig sökmotor, då de första träffarna på sökningar innehållandes "C++" brukar komma härifrån. Något bättre uppdaterad än Cplusplus.com.
  • Cpp Core Guidelines - En samling generella riktlinjer där målet är modern kod som undviker vanliga fallgropar. Introducerad av Bjarne Stroustrup och Herb Sutter, två stora namn inom C++ communityt. Behandlar väldigt mycket och allt är inte relevant för nybörjarkurser men kan vara väl värt att snegla på då och då för den som är intresserad. Om begrepp som klasser och funktioner är nya för dig så finns det annat att fokusera på.

JavaScript, CSS, HTML

Olika saker men tenderar att användas tillsammans i kurserna på programmet.

  • Mozillas MDN är en pålitlig källa för tutorials och referensmaterial och annat för HTML, CSS, JavaScript, etc.

  • caniuse.com är bra för att se exakt vad olika webbläsare stöder.

  • Javascript.info - Mycket bra och modern källa att vända sig till för att lära sig modern Javascript steg för steg, eller för att läsa om specifika saker. Korta och enkla förklaringar utan krångel.

  • Se till att tidigt komma igång med Chrome Dev Tools. Underlättar väldigt mycket vid debugging av HTML, CSS och Javascript. Även skönt att använda när man designar CSS layouter.

Utbildningsplaner

  • Utbildningsplan Årskull 2022 med behörighetskrav

Utbildningsplan Årskull 2022

Kurser år 1

DT186G Programvaruteknisk Introduktionskurs

DT179G Programmeringens Grunder (Python)

  • Corey Schafer - Grymt bra tutorials för mycket av det som gås igenom i kursen - skönt när man är trött på att läsa.

DT151G Datorkommunikation med tillämpningar i Linux

  • linuxjourney - Kom igång med Linux - guider på olika nivåer
  • Kursmaterialets LMS-sida - Inspelade föreläsningar av Jim Kurose på UMASS, labbar, knowledge checks och interaktiva problem som hjälper mycket för instudering av materialet.
  • Umask-värden - En sammanställning av alla kombinationer för umask med resulterande behörigheter

DT146G Webbprogrammering med HTML5, CSS3 och JavaScript

Lär dig använda developer tools i Firefox eller Chrome. Ovärderligt/oumbärligt.

Om boken som används fortfarande är Internet & World Wide Web: How To Program, 5th Edition, rekommenderas den inte. Fungerar mer som ett utdaterat uppslagsverk än en guide för hur man bedriver webbutveckling.

Alternativ till den mycket utdaterade kurslitteraturen:

DT194G Mjukvaruutveckling

  • Diagrams.net - Bra verktyg för alla typer av modellering och diagram, t.ex ER och UML. Går att arbeta tillsammans på med liveuppdatering via Google Drive, och även att spara via Github.

MA140G Diskret matematik för programmerare

  • Matteboken.se - gratis övningar och lektioner. Speciellt Matte 5 och Mattespecialisering tar upp saker relevanta för kursen.
  • Symbolab Math Solver - förklarar hur godtycklig ekvation kan lösas

DT188G Databaser, modellering och implementering

  • DB Browser for SQLite (sqlitebrowser) - "visual, open source tool to create, design, and edit database files compatible with SQLite" - snabbt och enkelt sätt att laborera med databaser
  • Diagrams.net - Bra verktyg för alla typer av modellering och diagram, t.ex ER och UML. Går att arbeta tillsammans på med liveuppdatering via Google Drive, och även att spara via Github.

DT180G Objektorienterad programmering I

Använd IntelliJ IDEA (gratis studentlicens) för att göra livet drägligare.

Kurser år 2

DT182G Vetenskapligt skrivande & argumentation

DT181G Objektorienterad programmering II

DT190G JavaScriptbaserad webbutveckling

DT031G Applikationsutveckling för Android

DT042G Metoder och verktyg i mjukvaruprojekt

DT195G Operativsystem

DT183G Datastrukturer och algoritmer

DT167G Mjukvarusäkerhet

Kurser år 3

DT166G Presentation av ny teknik

DT175G Reaktiv programmering

DT031G Användarcentrerad mjukvaruutveckling

DT199G Programmeringsparadigm

DT002G Tillämpad datateknik

DT175G Artificiell Intelligens för agenter

DT133G/DT192G Sjävständigt arbete

Annat nyttigt

C++

PHP

  • PHP: The Right Way ("There’s a lot of outdated information on the Web that leads new PHP users astray, propagating bad practices and insecure code. PHP: The Right Way is an easy-to-read, quick reference for PHP popular coding standards, links to authoritative tutorials around the Web and what the contributors consider to be best practices at the present time.")

Studentombud och rättigheter

Studentkåren i Östersund har ett heltidsanställt studentombud som kan hjälpa dig vid problem med universitetet. ("Alla studenter på Mittuniversitetet i Östersund kan få råd och medlemmar i kåren får dessutom ytterligare hjälp i form av att studentombudet företräder dem i ärendet om så önskas. Kårmedlemskapet ger det lilla extra.")

Mittuniversitetets regel för examination säger bland annat:

Rättningstiden för examination vid Mittuniversitetet är högst 15 arbetsdagar. Rättningstid räknas från dagen efter examinationstillfället tills den dag resultatet redovisas. Om särskilda skäl föreligger kan avdelning besluta om undantag från denna regel efter samråd med berörda studenter.

och:

Datum för ny examination ska meddelas senast vid ordinarie examinationstillfälle. Tiden mellan meddelandet av resultatet av examinationen och ny examination måste vara minst två (2) kalenderveckor.

Se även Universitetskanslerämbetets vägledning Rättssäker examination.

Studenterbjudanden/-rabatter

  • JetBrains-programmen (se IDE:er ovan) - få samtliga gratis
  • GitHub Student Developer Pack - allt möjligt, t.ex. $X i kredit på diverse molntjänster, samt Pro-konto på GitHub (ingen större skillnad jämfört med gratiskontot, men det står då "PRO" i din GitHub-profil! Whoa!). Bör räcka med att du använder din @student.miun.se-adress för verifiering, inget mer än så krävs.
  • Dustin Home har studentrabatter
  • Lenovo har studentrabatter (Thinkpad X- eller T-serie standardtips för bra utvecklarlaptops)
  • Dell har studentrabatter (XPS-serien är mycket populär bland utvecklare, kan ibland fås förinstallerad med Linux)
  • Apple har studentrabatter (MacBooks är också väldigt populära bland utvecklare)
  • Microsoft Office 365 Word, Excel och PowerPoint gratis för studenter
  • Tableau är ett program för analys och häftig visualisering av data. 1 års gratislicens för studenter genom din @student.miun.se-adress
  • Se Mecenat för allt möjligt annat

Ändra den här sidan

Nåt som är fel? Nåt du vill lägga till? Den här sidan finns i ett GitHub-repo. Gör en pull request! (Eller hojta på Discord.)

Kramdown används som syntax.