Mjukvaruutvecklare med datalogisk inriktning

Folkuniversitetet hjälper IT-branschen att utbilda nya kompetenta medarbetare.

Vi ser dagligen att företag inom IT-branschen kämpar med att hitta kompetent personal. Utmaningarna är många: Företag rekryterar medarbetare från varandra och branschen växer. Ett av de yrken det finns störst behov av är utbildade Mjukvaruutvecklare med datalogisk inriktning.

Folkuniversitetet vill därför ha behovet av helt nya Mjukvaruutvecklare med datalogisk inriktning bekräftat av dig som arbetar inom branschen. Om du och dina kollegor anser att det finns ett kompetensgap avser vi att söka en yrkeshögskoleutbildning som hjälper er att fylla det.

Utbildningens upplägg

  • 2 år på heltid, 400 yhp
  • Start i september
  • Studier på distans
  • Lärande i arbete (LIA, praktik) under det andra utbildningsåret

Yrkesroll – Mjukvaruutvecklare med datalogisk inriktning

De som går denna utbildning kommer att ta examen med en bred kompetens inte helt olik den man får genom en högskoleutbildning - fast med yrkeshögskolans fokus på det praktiska. På sätt och vis blir de som går utbildningen en “programmeringsgeneralist”, även om tyngdpunkten ligger på backend och molnutveckling, och då främst med programmeringsspråket Python.

Den datalogiska inriktningen handlar primärt om att de som går denna utbildning får en djupare förståelse för programmering, arkitektur och datalogiskt tänkande än vad man får från en traditionell YH-utbildning. Samtidigt är arbetet hela tiden praktiskt, vilket gör att fokus ligger på att göra, inte att läsa om. Tanken med detta är att skapa mjukvaruutvecklare som efter examen snabbt och smidigt kan byta mellan olika tekniker, programmeringsspråk och ramverk, samtidigt som de även snabbt kan komma igång med det faktiska kodandet.

Utbildningen är främst inriktad mot backendsidan, men lägger även en stor tonvikt på moln och molnutveckling. De som går utbildningen får en förståelse för olika molntjänster och blir trygga i hela molntjänstspektrumet - från PaaS till SaaS. I detta ingår en serverlessutveckling, containerization, IAM samt det som ofta kan ställa till ett problem - prismodeller och estimering.

På detta sätt blir de som går denna utbildning redo att med en kort startsträcka vara involverad i flera olika delar av stacken. Samtidigt får de även en djupare förståelse för den logik som ligger bakom moderna mjukvarulösningar, vilket gör att de både kan sitta och programmera, men samtidigt också ha en mycket godare förståelse för den arkitektur som ligger bakom.

Arbetslivets kompetenskrav för yrkesrollen Mjukvaruutvecklare med datalogisk inriktning

  • Goda kunskaper i att utveckla objektorienterad Python
  • Goda kunskaper i datalogiska processer och problemlösning
  • Fördjupade kunskaper i att hantera vanligt förekommande programmeringsutmaningar
  • Kunna utveckla enklare webbsidor med HTML, CSS och Javascript
  • Vara trygg i mjukvaruutveckling med agila metoden Scrum och verktyg
  • Goda kunskaper i utveckling av molnapplikationer samt och driftsättning i molnet

Kurser i studieordning

  • Introduktion till yrket och IT-branschen, 10 yhp
  • Datalogiskt tänkande, 20 yhp
  • Grundläggande programmering med Python, 30 yhp
  • Databaser, 30 yhp
  • Projektmetodik för utveckling, 20 yhp
  • Objektorienterad programmering och designmönster, 30 yhp
  • Webbtjänst med Python, 25 yhp
  • Algoritmer och datastrukturer, 20 yhp
  • Frontendutveckling, 30 yhp
  • Molnutveckling, 40 yhp
  • Projektarbete, 20 yhp
  • LIA 1, 50 yhp
  • Examensarbete, 20 yhp
  • LIA 2, 50 yhp
  • Hållbar tech, 5 yhp

Du kan läsa mer om innehållet i kurserna längre ner på sidan.

Kursernas innehåll

Introduktion till yrket och IT-branschen, 10 yhp

IT-branschen är en bransch sprängfylld av tekniska begrepp, metoder och roller. I den här kursen skapas en grundläggande förståelse för hur allt hänger samman. Med utgångspunkt i mjukvarustacken orienterar denna kurs de studerande genom de olika “lagren” i ett IT-projekt, från design till leverans och underhåll. I kursen klarläggs dessutom vilka roller som ansvarar för vilka “lager” och processer. På detta sätt skapar denna kurs en bra grund för att förstå IT-branschen och var någonstans den studerande kommer att befinna sig i sin framtida yrkesroll.

Innehåll:

  • Roller i stackens olika lager, exempelvis UX-designer, frontendutvecklare, backendutvecklare och systemoperatör
  • Vanligt förekommande mjukvara för utveckling, exempelvis olika sorters IDE:er och compilers
  • Vanligt förekommande arbetsområden för en mjukvaruutvecklare, såsom säkerhet, API:er och biz logic

Datalogiskt tänkande, 20 yhp

Kursen syftar till att ge de studerande en grundläggande förståelse för de koncept och metoder som används inom programmering, datalogiskt tänkande. Målet är att utveckla de studerandes problemlösningsförmåga, kritiska tänkande och kreativitet genom att tillämpa datalogiska principer och tekniker. Kursen innehåller även inslag av pseudokod, en metod för att beskriva algoritmer utan program-riktig kod.

Genom att tillägna sig innehållet i denna kurs får den studerande en större förståelse för hur programmering egentligen fungerar och hur man kommunicerar på bästa sätt med en dator. Att programmera handlar lika mycket om att kunna använda olika språk och tekniker som att förstå själva problemlösningen bakom. I denna kurs får de studerande en ordentlig bas att stå på inför kommande programmeringskurser.

Innehåll:

  • Dekomposition
  • Mönsterigenkänning och Abstraktion
  • Algoritmer
  • Logik
  • Pseudokod

Grundläggande programmering med Python, 30 yhp

Kursen syftar till att introducera programmeringsspråket Python - ett av världens vanligaste programmeringsspråk. Kursen ger de studerande grundläggande kunskaper och färdigheter för att skapa egna program och lösa problem med hjälp av programmeringens viktigaste byggstenar. Kursen är designad för att ge en stabil grund att bygga på för att fortsätta lära sig mer avancerade koncept och tekniker inom mjukvaruutveckling.

I kursen ingår även kunskap om de datalogiska delprocesserna samt relevanta utvecklingsverktyg såsom IDE:er och versionshantering med git. Även om språket för kursen är Python, är detta en kurs som bygger vidare på den föregående kursen i datalogiskt tänkande och blir på så sätt ett praktiskt omsättande av de datalogiska kunskaperna som de studerande fått tidigare i utbildningen.

Innehåll:

  • Grundläggande Git
  • Grundläggande syntax i Python
  • Variabler
  • Datatyper
  • Kontrollstrukturer
  • Funktioner
  • Moduler

Databaser, 30 yhp

Kursen syftar till att ge de studerande grundläggande kunskaper i skapa, uppdatera, ändra och ta bort (CRUD) data. Kursen introducerar både relations- och dokumentdatabaser, vilka representerar två av de mest populära databasmodellerna inom modern mjukvaruutveckling. Genom att lära sig om dessa två typer av databaser får de studerande en bredare förståelse för olika databaslösningar och hur de kan användas effektivt för att lagra och hantera data.

I kursen går även igenom hur man på ett effektivt sätt integrerar databasen i sin programkod och på detta sätt blir denna kurs en naturlig fortsättning på tidigare kurser i utbildningen.

Innehåll:

  • Relationella databaser, exempelvis SQL-server eller PostgresDb
  • Styrkor och svagheter med relationella databaser
  • Designprinciper för relationella databaser, exempelvis normalisering och ER-diagram
  • Grunderna i SQL
  • noSQL-databas, exempelvis AWS DynamoDb eller Azure Cosmos Db
  • Styrkor & svagheter med noSQL-databaser
  • Designprinciper för noSQL-databaser, exempelvis duplication och denormalization
  • CRUD-operationer

Projektmetodik för utveckling, 20 yhp

I denna kurs går vi igenom hur man samarbetar kring utvecklingsprojekt med den agila metoden Scrum. Då det är väldigt ovanligt som de studerande i sin framtida yrkesroll kommer att arbeta själva, ger denna kurs förutsättningar för att kunna samarbeta med andra utvecklare och yrkesroller kring mjukvaruutveckling.

Kursen går även igenom mjukvara som stöttar de agila processerna, exempelvis Jira eller Github projects. Kursen avhandlar dessutom arbetsflöden kring versionshantering av kod så ett projekt med flera utvecklare kan skala kontrollerat, exempelvis Git flow.

Innehåll:

  • Scrum
  • Fördjupning versionshantering med Git (exempelvis branches, pull requests och merge requests)
  • Arbetsflöden för samarbeten kring kod, exempelvis Git Flow
  • Agilt verktyg, exempelvis Jira alternativt Github projects

Objektorienterad programmering och designmönster, 30 yhp

Kursens syfte är att ge den studerande en grundläggande förståelse för objektorienterad programmering (OOP) och hur det kan användas för att skapa effektiva, modulära och lättförståeliga program. OOP är ett viktig programmeringsparadigm som underlättar hantering och organisering av komplexa applikationer. I kursen lägger vi även fokus på SOLID-principerna för skalbar och lätthanterlig kod.

Kursen går även igenom vanligt förekommande Design Patterns (på svenska “designmönster”) för programarkitektur, exempelvis Singleton eller Factory.

Innehåll:

  • Objektorienterad programmeringsprinciper (exempelvis klasser, arv, polymorfism och inkapsling)
  • SOLID-principerna
  • Vanligt förekommande designmönster, exempelvis Singleton och Factory.

Webbtjänst med Python, 25yhp

Kursen syftar till att förstå hur moderna webbtjänster är uppbyggda på ett stabilt, skalbart och säkert sätt. I kursen ingår kunskaper om dataformatet JSON samt att designa och bygga API:er med REST-standarden. REST-standarden används i stort sett av hela internet idag. I kursen ingår också att säkra upp skapade API:er med olika tekniker såsom exempelvis API-key samt JSON Web Tokens (JWT).

I kursen ingår dessutom grunderna kring mjukvara som används för att designa och testa REST API:er, till exempel Postman eller Insomnia.

Innehåll:

  • REST API-design
  • Http request
  • Mjukvara för API design och test, exempelvis Postman eller Insomnia
  • JSON
  • Autentisering och säkerhet, exempelvis API-key och JSON Web Tokens (JWT)

Algoritmer och datastrukturer, 20 yhp

Inom programmering finns det återkommande problem och utmaningar som behöver hanteras. Det kan bland annat handla om att sortera data , att leta fram specifik data ur stora datamängder eller att hålla koll på ordningen av olika objekt. Att ha en förståelse för hur man gör detta är en viktig kompetens för en mjukvaruutvecklare.

Denna kurs går därför igenom vanligt förekommande generella operationer inom programmering och hur de kan hanteras i Python. Denna kurs ger därför, tillsammans med tidigare kurser i utbildningen en bredare förståelse för programmering i allmänhet och programmering med Python i synnerhet.

Innehåll:

  • Sökning
  • Sortering
  • Rekursion
  • Grundläggande datastrukturer, exempelvis listor, träd och köer.

Frontendutveckling, 30 yhp

Kursen syftar till att ge de studerande en förståelse för klientsidan av ett webbprojekt. I kursen ingår att övergripande gå igenom de tre språk webbläsaren förstår, semantiskt HTML för innehåll, CSS för design och utseende, samt JavaScript för logik och beteende. Denna kurs ger således de studerande en bredare förståelse för frontendutveckling och vilken roll denna har i mjukvarustacken.

I kursen ingår, utöver grundläggande frontendutveckling, även att interagera med REST-API:er för att lära, skriva och uppdatera data på serversidan.

Innehåll:

  • Semantisk HTML
  • CSS syntax
  • Layout med CSS (Flexbox och Grid)
  • Vanilla JavaScript (ES6 +)
  • Async anrop till ett API 10

Molnutveckling, 40 yhp

I denna kurs får de studerande ta klivet över från den lokala miljö på datorn till molnsidan där de flesta av dagens IT-system utvecklas och driftas. Kärnan i kursen ligger i att förstå hur en modern molnmiljö är uppbyggd. De studerande får även lära sig hur de får upp sin kod i molnet och hur de driftsätter mikrotjänster i en skalbar containermiljö.

Kursen avhandlar dessutom den senaste molnarkitekturen Serverless, där program sprids ut på funktionsnivå och kod endast körs när den används. I kursen får de studerande bygga ett cloud-native REST API med serverlessteknik och persistent lagring av data. Kursen avhandlar även grunderna i resurs- och tillgångshantering (IAM).

Innehåll:

  • Grundläggande begrepp inom molnet
  • Prismodeller och estimering
  • Mikrotjänster med Containers
  • Serverless
  • IAM
  • API Gateway, exempelvis AWS API Gateway alternativt Azure API Gateway
  • Cloud functions, exempelvis AWS Lambda alternativt Azure functions
  • Cloud Db, exempelvis AWS DynamoDb, alternativt Azure Cosmos Db

Projektarbete, 20 yhp

Syftet med kursen är att ge de studerande chansen att planera, utveckla och driftsätta en mindre applikation. Kursen innehåller inte några nya tekniker utan är tänkt som en tillämpning av de kunskaper, färdigheter och kompetenser som den studerande tillägnat sig under utbildningen.

Projektets teknikval är väldigt flexibla och kan därför med fördel förankras i LIA-plats, men går även bra att göra utan koppling till en arbetsplats. Kursen avslutas med muntlig presentation av projektresultat samt vilka teknikval som gjorts och varför.

Innehåll:

  • Från koncept (brief) till utveckling och driftsättning i molnmiljö
  • Planering, genomförande och enklare teknisk dokumentation av projekt
  • Teknikval och teknisk skuld

LIA 1, 50 yhp

Under LIA 1 är tanken att den studerande skall omsätta sina teoretiska kunskaper till praktisk handling. Den första LIA:n kommer relativt sent in i utbildningen för att den studerande skall ha den teoretiska basen tillräckligt klar innan de går ut. Syftet med kursen är att ge den studerande en tydlig första förståelse för yrkesrollen genom att gå med en mjukvaruutvecklare som handledare.

Syftet med kursen är att den ska komplettera de teoretiska delarna av utbildningen genom att låta den studerande se hur den teori som de lärt sig under utbildningen omsätts i verkligheten. I denna kurs finns inte krav på att de studerande själva skall delta i skarpa projekt, utan tanken är att den studerande i första hand skall bilda sig en egen och tydlig uppfattning om hur yrkesrollen ser ut.

Innehåll:

  • Förståelse för yrkesrollen
  • Omsätta teori till praktik

Examensarbete, 20 yhp

Tanken med examensarbetet är att den studerande skall, i den mån det går, kunna arbeta i ett eller flera skarpa utvecklingsprojekt. Examensarbetet kan med fördel kombineras med LIA 2, men det är inte ett krav. Om den studerande inte har möjlighet att arbeta i ett skarpt utvecklingsprojekt kommer de att arbeta på ett teoretiskt projekt där de får designa en molnförlagd webbtjänst.

Syftet med examensarbetet är att knyta ihop säcken för hela utbildningen genom att den studerande tydligt dokumenterar, följer upp och utvärderar en tydligt avgränsad del av en webbtjänst. I examensarbetet skall samtliga delar av utbildningen vägas in och att utveckla och driftsätta en molntjänst är en obligatorisk del.

Innehåll:

  • Skarpt eller teoretiskt projektarbete
  • Sammanfattning av utbildningen

LIA 2, 50 yhp

LIA 2 är utbildningens sista kurs. Den går med fördel att kombinera med examensarbetet och om så önskas då också att forma en sammanhängande praktisk del av utbildningen.

Syftet med LIA 2 är att den studerande skall få vara en del av ett eller flera skarpa utvecklingsprojekt. Den huvudsakliga skillnaden mellan LIA 1 och LIA 2 är således att den studerande under LIA 2 förväntas kunna gå in i yrkesrollen på ett mer utpräglat sätt. Den studerande kommer att få använda alla de kunskaper som de tillägnat sig under utbildningens gång för att ta det sista klivet in i en karriär som mjukvaruutvecklare.

Innehåll:

  • Skarp utveckling av webbtjäst
  • Omsätta teori till praktik

Hållbar tech, 5 yhp

Denna kurs i hållbar tech fokuserar på begreppet hållbar utveckling i ett techperspektiv. I kursen ingår således en genomgång av begreppet hållbar utveckling och de studerande får genom denna kurs en bredare förståelse för hållbar utveckling och dess tre ben - ekologisk, social och ekonomisk hållbarhet. Inom ramen för detta kommer de studerande att få stifta bekantskap med hur man inom techbranschen både arbetar med dessa frågor och hur man borde arbeta med dem.

Tech har identifierats som både en direkt nödvändighet för att nå Agenda 2030, men samtidigt bär tech även ett tungt ansvar för saker som inte riktigt är som de borde i samtliga grenar av den hållbara utvecklingen. Denna dualitet ligger till grund för kursen och syftet är således att de studerande genom denna kurs skall få med sig ett problematiserande och medvetet tankesätt kring hållbar utveckling in i sina framtida yrkesroller.

Kursen ligger i kurslistan sist i utbildningen, men i praktiken kommer kursen att finnas med som ett tydligt fokus på utbildningen och undervisningen kommer att ske parallellt med andra kurser.

Innehåll:

  • Hållbar utveckling och dess tre ben - ekologisk, social och ekonomisk hållbarhet
  • Tech som en nödvändig faktor för hållbar utveckling
  • Tech som försvårare av en hållbar utveckling

Avsiktsförklaring