søndag den 30. juni 2013

Project euler problem #2: An interesting alternative "solution"

I have stepped across the site called project euler. An nifty site for using your skills as a programmer to solve different problems including doing an algorithm.

In my time being an Software engineering student in the 4. semester. I have learned that you should always try to seperate your problem into smaller subproblems, and find the solution to them.

I tried that, and here was the result:


//find the multiples of 3
        private static int MultipleOfThree()
        {
            int result = 0;
            for (int i = 0; i < 1000; i++)
            {
                if (i % 3 == 0)
                {
                    result = result + i;
                }
            }
            return result;
        }
        //find the multiples of 5
        private static int MultipleOfFive()
        {
            int result = 0;
            for (int i = 0; i < 1000; i++)
            {
                if (i % 5 == 0)
                {
                    result = result + i;
                }
            }
            return result;
        }


The problem here is that if you add those two numbers, it does not give the correct result.

I then tried to do the same thing but put those two subproblems into one:
        //the real method of doing the calculation
        private static int MultipleOfFiveThree()
        {
            int result = 0;
            for (int i = 0; i < 1000; i++)
            {
                if (i % 3 == 0 || i % 5 == 0)
                {
                    result = result + i;
                }
            }
            return result;
        }
 This produces the correct result.

Why is that so? Why is it that when I divide the program into two seperate ways it does not give the correct result?

mandag den 24. juni 2013

Læringsteknikker og metalæring

Nedenstående indlæg er ikke helt færdig, der kan forekomme grammatiske og/eller formulerings fejl.

Ok, jeg vil lave den her kort som muligt fordi dette er et problem, som kræver at man kan kende teknikkerne for indlæring og kognitive evner.

Formålet med dette er at hjælpe jer (og mig selv) til at udnytte de stærke sider af jeres læringsvaner og metakognition. På den måde ved I hvad I skal gøre for at studere bedre og forstå noget rigtigt, på den mest optimale måde.

Jeg sidder i en ekstrem uheldig situation. Siden folkeskolen har jeg haft 2 problemer når det kommer til eksamen.

1. Jeg kan ikke lave en ordenlig syntese.
2. Mine sproglige intelligenter er også dårlige.

Jeg er kommet i en situation, hvor jeg får 02 for at ikke at kunne bruge de rigtige termer og jeg snakker ekstrem meget "volapyk", når man "bare" kan bruge termerne rigtigt.

Jeg ved ikke helt hvordan jeg skal løse dem.
Jeg har tænkt, at man måske bliver nødsaget til at snakke med andre omkring emnet. Jeg er nød til at bruge de forskellige terminologier inden for faget, for at kunne benytte dem rigtigt til eksamen.

Ellers ved jeg det ikke.

Håber det gav mening.

De nedenstående teknikker, som man burde have lært på de gymnasialle uddannelser.

Det ene er teorien om de kognitive evner.
Det andet er teorien om indlæring (læringsstile).

Til det vil jeg starte med at analysere mine kognitive evner. Derved vil jeg kunne få mig et overblik over hvilke mangler jeg har.

Sektion 1: Gardners intelligenser

Lad os tage udgangspunkt i gardners intelligenser.

De vigtigste punkter inden for eksamen er følgende intelligenser.
Sproglig/verbal intelligens
Kropslig/kinæstetisk intelligens
Logisk/matematisk intelligens

Disse 3 intelligenser vil medføre at man kan formulere sig rigtigt og komme med løsninger til problemer og delproblemer. Den kropslige intelligens bruges kun til at vise entasuiasme, og vise interesse.

Sektion 2: Blooms taksonomi:


http://so.systime.dk/index.php?id=121
http://www.emu.dk/gym/elever/opgaver/taksonomiskeniveauer.html

Når man bliver vurderet til eksamen, bliver man tjekket igennem ved hjælp af blooms taksonomi. Den bruges til at vise hvor højt et trin din "traksonomiske viden" er. Jo højere trin jo bedre.

Hvis vi kigger på blooms taksonomi, så består den af nogle trin.
Det er vigtigt at kunne alle ting. Men man starter fra bunden og arbejder sig opad. Som regel siges det at på folkeskole nieavu skal man kunne de 2 første trin.
På de gymnasialle uddannelser skal man kunne de 4 næste trin. Og på universitetet skal man kunne alle 6 trin.

Det er vigtigt at forstå hvad de forskellige trin de indebærer. For jo højere et trin du kan jo højere karakter får du.

Til dette kan man også komme ind på Biggs kompetencetaksonomi:
http://so.systime.dk/?id=c216

Sektion 3: Indlæringsstile og hjælp til de taksonomiske trin.
http://intelligenser.emu.dk/temami/laeringsstile/index.html
http://www.emu.dk/gym/tvaers/studiekp/elever/studiemetode/Laeringsvanermetakognition.html

Nu er det vigtigt at "slå ørene ud", som man siger.
Det er vigtigt at forstå at DU er nød til at se hvilke ting der gør at du lærer bedst. Der findes der forskellige indlæringsstile, som definiere det for dig.

Den første er kolbs læringscirkel:

Det er vigtigt at arbejde med ALLE områder i et projekt. Selvfølgelig er man bedre til nogle ting end andre. Derfor er det en god ting at sætte sig i grupper.
Den skal bruges til at se på hvordan du lærer ny viden.

Den anden er Dunn's læringsstil:
http://intelligenser.emu.dk/temami/laeringsstile/vigtigefaktorer.html

Det går ud på at finde den rigtige kombination af faktorer, hvor man har det mest behagligt at lære på.
På den måde kan man bruge det til at læse på nyt materiale og terminologier.

Den tredje er... uhm... der er ikke flere?

Sektion 4: "Det magiske trick".
Alt dette virker meget avanceret. Måske endda forvirrende for jer!
Frygt ikke. Faktisk vil jeres underbevidsthed hjælpe jer med dette!
Fortæl mig, hvilke ting på Dunn's læringsstil kan I lide?
Ok, prøv så at brug tiden på at fokusere på dette læringsstil og find noget du vil lære om. (F.eks ved at forstå et fag).
Derefter gå igennem bloomstaksonomi for at se hvilket trin du ligger på.

Dette vil måske blive udviddet afhængigt af at jeg glemmer noget.
Jeg vil også lave en video omkring dette, men i mellemtiden kan I se den her informative video serie omkring hvordan folk de lærer:

http://www.youtube.com/watch?v=iMZA80XpP6Y

onsdag den 12. juni 2013

Fejl og mangler til PSS eksamen

Ja... jeg fik 7 til PSS eksamen. Hvilket er fin nok, de pointede nogle ting, som jeg vil tage til mig. Jeg havde omkring filsystemer. Der snakkede jeg om Inodes og hvad de gjorde. Jeg snakkede om hvordan mappe heirakiet fungerede. Jeg fejlede ved at snakke omkring hvad inode egentlig pegede til (som så er filer). 1. Jeg rodede mig ud i noget, som jeg havde svært at forklare. 2. Jeg faldte i "sorte huller" og andre gange sprang jeg forskellige ting over. 3. Jeg snakkede også for meget omkring volumes, swaps og partitioner i linux og windows. Som en ekstra ting vil jeg minde mig selv om at en "file handler" fra fil objektet er "bare" en int, et tal, som fås fra open (og ikke f_open, da man får pointeren til filen i stedet for). Tallet kan så pege på en write operation.

tirsdag den 11. juni 2013

Nogle PSS (principper i samtidighed og parallelitet for operative systemer) forvirringer og tanker

Disse nedenstående ting skete da jeg ville læse igennem til PSS kurset.
  Hvordan er det at file handleren pointer (eller peger) på den rigtige device driver fra fil objektet?
  Når man skal reactivate (enable) interrupts i fetch-loop instructions så kan man bruge bitmasking? (IRET)
  clock algorithm lige så god som LRU
  Forståede ting: brugbare ting med prioitised interrupts. Hvis nu der er flere interrupts så behøves ikke alle blive kaldt via ISR. Dette betyder at den højere prioitet kan få adgang.
  OS'en sørger for at der er ingen andre tråde som har adgang til memory rangen... "datum" = data på entels form.
  I/O manager omkring dataflow: sorting kan være en langsom operation eller unødig f.eks efter en merging af data: http://msdn.microsoft.com/en-us/library/ms141031.aspx
  Omkring device drivers of split-implementation: Top-Half: This is the critical section. The interrupt is disabled when this is executed. Bottom-Half: This is the less critical section. The interrupt is enable when this is executed. http://linuxforthenew.blogspot.dk/2011/07/top-bottom-halfs-in-linux-isr.html
  copy pastes: In computer software, an application binary interface (ABI) describes the low-level interface between a computer program and the operating system or another program.
  ABIs cover details such as:
  the sizes, layout, and alignment of data types the calling convention, which controls how functions' arguments are passed and return values retrieved; for example, whether all parameters are passed on the stack or some are passed in registers, which registers are used for which function parameters, and whether the first function parameter passed on the stack is pushed first or last onto the stack how an application should make system calls to the operating system and, if the ABI specifies direct system calls rather than procedure calls to system call stubs, the system call numbers and in the case of a complete operating system ABI, the binary format of object files, program libraries and so on.
  polling kan bruges sammen med busy waiting: Polling, or polled operation, in computer science, refers to actively sampling the status of an external device by a client program as a synchronous activity. Polling is most often used in terms of input/output (I/O), and is also referred to as polled I/O or software-driven I/O.
  CPU affinity Processor affinity or CPU pinning enables the binding and un-binding of a process or thread to a physical CPU or a range of CPUs, so that the process or thread in question will run only on the CPU or range of CPUs in question, rather than being able to run on any CPU.
 
 
 
 
 
 
  Processes and Threads: thread execution, multi-threading, atomicity, race conditions, mutual exclusion (algorithms, hardwar support), busy waiting vs. blocking Synchronisation and deadlock: mutual exclusion, semaphores, mutexes, monitors, relative time, synchronisation, Co man's conditions, deadlock prevention strategies Deadlock and deadlock handling: deadlock, Co man's conditions, deadlock prevention strategies, livelock, priority inversion PSS2013 (Lecture 12) \The Rest" 15 MAY 2013 3 / 3 Eksamensemner POSIX threads (pthreads) Files and lesystems: basic concepts, name space organisation, meta-data, inodes, hard links, symbolic links, disk block allocation Memory Management: virtual memory, address translation, paging, shared memory, page tables Memory Management: page replacement algorithms and frame allocation I/O, system calls, device drivers: I/O types, system calls (implementation and concepts), device driver (implementation, interfaces, concepts), I/O manager, I/O scheduling, interrupts,

fredag den 7. juni 2013

Hvordan man får venner... rigtige venner

En person postede at han ville ønske at han havde venner... dette var svaret:
Og vær venlig at se den her video:


HOW TO THROW A BACHELOR PARTY. from gnarly bay productions, Inc. on Vimeo.