Kursinnehåll
Principer som ligger till grund för imperativa och objektorienterade språk och variationer mellan språken. Programmering i sådana språk, programutveckling, dokumentation och testning med hjälp av därtill avsedda verktyg. I kursen studeras minst två imperativa språk: ett objektorienterat och ett utan särskilt stöd för objektorientering (ex. Java och C). Kursivt nämns skriptspråk och domänspecifika språk som t.ex. Emacs Lisp, shellskript och byggskript. Jämförelser med funktionella språk görs. Programstrukturer som tas upp är bland annat: procedur, funktion, array, loop, pekare, struktur, automatisk och manuell minneshantering, objekt, klass, metod, arv, polymorfism, undantag. Olika former av värdeöverföring tas upp - värdesemantik, referenssemantik - och jämförs call-by-name. Testning av moduler, t.ex. genom "svartlådetestning" (baserad på modulens specifikation) och genom "vitlådetestning" (där utvecklaren strävar efter att garantera att alla programsatser, exekveringsvägar eller metoder används under testet). Viss integrationstestning och kravbaserad systemtestning. Systematisk arbetsgång för kravspecifikation, problemanalys, programdesign, kodning, kodgranskning, testning, felsökning samt dokumentation.