// Lecture meetings, 44 regular meetings + final exam.
// Suitable for Spring MWF.

var lecture = new MeetingList("Lecture", [
  new Meeting(  // 1
    new Day(1, 23, 2008),
    [
      new Topic("Course introduction, computer abstractions and technology"),
      new ReadText("P&H Ch. 1"),
      new LocalWeb("cs2521", "lectures/computer-components.html", "Components of a Computer")
    ],
    [
    ]
  ),
  new Meeting(  // 2
    new Day(1, 25, 2008),
    [
      new Topic("MIPS assembly language (MAL)"),
      new ReadText("P&H Ch. 2.1-2.3, 2.5"),
      new LocalWeb("cs2521", "lectures/mal-introduction.html", "Introduction to MAL")
    ],
    [
    ]
  ),
  new Meeting(  // 3
    new Day(1, 28, 2008),
    [
      new Topic("Control structures"),
      new ReadText("P&H Ch. 2.6"),
      new LocalWeb("cs2521", "lectures/control-structures.html", "Implementing MAL Control Structures")
    ],
    [
    ]
  ),
  new Meeting(  // 4
    new Day(1, 30, 2008),
    [
      new Topic("Subprograms and subprogram linkage"),
      new ReadText("P&H Ch. 2.7"),
      new LocalWeb("cs2521", "lectures/subprogram-linkage.html", "Subprogram Linkage")
    ],
    [
    ]
  ),
  new Meeting(  // 5
    new Day(2, 1, 2008),
    [
      new Topic("Data Structures"),
      new ReadText("P&H Ch. 2.8, 2.13, 2.15"),
      new LocalWeb("cs2521", "lectures/data-structures.html", "Assembly Language Structures")
    ],
    [
    ]
  ),
  new Meeting(  // 6
    new Day(2, 4, 2008),
    [
      new Topic("Objects"),
      new ReadText("P&H Ch. 2.14"),
      new LocalWeb("cs2521", "FIXME.html", "Objects in Assembly Language")
    ],
    [
    ]
  ),
  new Meeting(  // 7
    new Day(2, 6, 2008),
    [
      new Topic("MIPS instruction coding"),
      new ReadText("P&H Ch. 2.4, 2.9"),
      new LocalWeb("cs2521", "lectures/instruction-coding.html", "MIPS Instruction Coding")
    ],
    [
    ]
  ),
  new Meeting(  // 8
    new Day(2, 8, 2008),
    [
      new Topic("Program translation"),
      new ReadText("P&H Ch. 2.11"),
      new LocalWeb("asm", "programTranslation/program-translation.html", "Program Translation")
    ],
    [
    ]
  ),
  new Meeting(  // 9
    new Day(2, 11, 2008),
    [
      new Topic("Assembly and compilation"),
      new ReadText("P&H Ch. 2.12"),
      new LocalWeb("cs2521", "lectures/assembler-organization.html", "Assembly"),
      new LocalWeb("cs2521", "lectures/compilers.html", "Compilation")
    ],
    [
    ]
  ),
  new Meeting(  // 10
    new Day(2, 13, 2008),
    [
      new Topic("Operating systems"),
      new LocalWeb("cs2521", "lectures/virtualization.html", "Virtualization of Resources"),
      new LocalWeb("cs2521", "lectures/operating-system-interface.html", "The Operating System Interface")
    ],
    [
    ]
  ),
  new Meeting(  // 11
    new Day(2, 15, 2008),
    [
      new Topic("Linking and loading"),
      new ReadText("P&H Ch. 2.10"),
      new LocalWeb("cs2521", "lectures/linking-loading.html", "Linking and Loading")
    ],
    [
    ]
  ),
  new Meeting(  // 12
    new Day(2, 18, 2008),
    [
      new Topic("Addition and subtraction"),
      new ReadText("P&H Ch. 3.1-3.3")
    ],
    [
    ]
  ),
  new Meeting(  // 13
    new Day(2, 20, 2008),
    [
      new Topic("Lookahead Carry"),
      new ReadText("P&H App. B.6"),
      new Unlabeled(
      "http://www.d.umn.edu/~gshute/cs2521/ch3/lookahead-carry.html",
      "Lecture Figures"
      )
    ],
    [
    ]
  ),
  new Meeting(  // 14
    new Day(2, 22, 2008),
    [
      new Topic("ALU organization"),
      new ReadText("P&H Ch. 3.3, App. B.5"),
      new Unlabeled(
      "http://www.d.umn.edu/~gshute/cs2521/ch3/alu.html",
      "Lecture Figures"
      )
    ],
    [
    ]
  ),
  new Meeting(  // 15
    new Day(2, 25, 2008),
    [
      new Topic("Multipication and division"),
      new ReadText("P&H Ch. 3.4, 3.5"),
      new Unlabeled(
      "http://www.d.umn.edu/~gshute/cs2521/ch3/multipication.html",
      "Multipication"
      ),
      new Unlabeled(
      "http://www.d.umn.edu/~gshute/cs2521/ch3/division.html",
      "Division"
      )
    ],
    [
    ]
  ),
  new Meeting(  // 16
    new Day(2, 27, 2008),
    [
      new Topic("Floating point"),
      new ReadText("P&H Ch. 3.6")
    ],
    [
    ]
  ),
  new Meeting(  // 17
    new Day(2, 29, 2008),
    [
      new Discussion(EX, 1)
    ],
    [
    ]
  ),
  new Meeting(  // 18
    new Day(3, 3, 2008),
    [
    ],
    [
      new GradeEvent(EX, 1)
    ]
  ),
  new Meeting(  // 19
    new Day(3, 5, 2008),
    [
      new Topic("Processor speed, the performance equation"),
      new ReadText("P&H Ch. 4.1-4.3"),
      new LocalWeb("arch", "performance/index.html", "Performance overview"),
      new LocalWeb("arch", "performance/speed.html", "Execution Time and Throughput"),
      new LocalWeb("arch", "performance/performance.html", "Performance and Execution Time"),
      new LocalWeb("arch", "performance/performanceEquation.html", "The Performance Equation")
    ],
    [
    ]
  ),
  new Meeting(  // 20
    new Day(3, 7, 2008),
    [
      new Topic("Amdahl's law"),
      new ReadText("P&H Ch. 4.7"),
      new LocalWeb("arch", "performance/amdahl.html", "Amdahl's Law")
    ],
    [
    ]
  ),
  new Meeting(  // 21
    new Day(3, 10, 2008),
    [
      new Topic("Assessing performance"),
      new ReadText("P&H Ch. 4.4-4.6"),
      new LocalWeb("arch", "performance/assessing.html", "Assessing Performance"),
      new LocalWeb("arch", "performance/summary.html", "CPU Performance Summary")
    ],
    [
    ]
  ),
  new Meeting(  // 22
    new Day(3, 12, 2008),
    [
      new Topic("Datapath fundamentals"),
      new ReadText("P&H Ch. 5.1, 5.2"),
      new LocalWeb("cs2521", "lectures/instruction-execution.html", "MIPS Instruction Execution")
    ],
    [
    ]
  ),
  new Meeting(  // 23
    new Day(3, 14, 2008),
    [
      new Topic("Building a datapath"),
      new ReadText("P&H Ch. 5.3, App. B.5"),
      new LocalWeb("cs2521", "lectures/single-cycle.html", "Single-Cycle Processor Implementation")
    ],
    [
    ]
  ),
  new Meeting(  // 24
    new Day(3, 24, 2008),
    [
      new Topic("A single-cycle implementation"),
      new ReadText("P&H Ch. 5.4"),
      new LocalWeb("cs2521", "lectures/single-cycle.html", "Single-Cycle Processor Implementation")
    ],
    [
    ]
  ),
  new Meeting(  // 25
    new Day(3, 26, 2008),
    [
      new Topic("A single-cycle implementation"),
      new ReadText("P&H Ch. 5.4"),
      new LocalWeb("cs2521", "lectures/single-cycle.html", "Single-Cycle Processor Implementation")
    ],
    [
    ]
  ),
  new Meeting(  // 26
    new Day(3, 28, 2008),
    [
      new Topic("A multicycle implementation"),
      new ReadText("P&H Ch. 5.5, App. B.10"),
      new LocalWeb("cs2521", "lectures/multicycle.html", "Multicycle Processor Implementation")
    ],
    [
    ]
  ),
  new Meeting(  // 27
    new Day(3, 31, 2008),
    [
      new Topic("A multicycle implementation"),
      new ReadText("P&H Ch. 5.5"),
      new LocalWeb("cs2521", "lectures/multicycle.html", "Multicycle Processor Implementation")
    ],
    [
    ]
  ),
  new Meeting(  // 28
    new Day(4, 2, 2008),
    [
      new Topic("Implementing an operating system interface"),
      new ReadText("P&H Ch. 5.6"),
      new LocalWeb("cs2521", "FIXME.html", "Implementing Exception Handling")
    ],
    [
    ]
  ),
  new Meeting(  // 29
    new Day(4, 4, 2008),
    [
      new Topic("RISC and CISC"),
      new LocalWeb("cs2521", "lectures/risc-principles.html", "RISC Principles")
    ],
    [
    ]
  ),
  new Meeting(  // 30
    new Day(4, 7, 2008),
    [
      new Discussion(EX, 2)
    ],
    [
    ]
  ),
  new Meeting(  // 31
    new Day(4, 9, 2008),
    [
    ],
    [
      new GradeEvent(EX, 2)
    ]
  ),
  new Meeting(  // 32
    new Day(4, 11, 2008),
    [
      new Topic("Pipelining fundamentals"),
      new ReadText("P&H Ch. 6.1, 6.2"),
      new LocalWeb("cs2521", "lectures/pipelining.html", "Pipelining")
    ],
    [
    ]
  ),
  new Meeting(  // 33
    new Day(4, 14, 2008),
    [
      new Topic("Pipelined control and pipeline obstacles"),
      new ReadText("P&H Ch. 6.3"),
      new LocalWeb("cs2521", "lectures/obstacles.html", "Pipelining Obstacles")
    ],
    [
    ]
  ),
  new Meeting(  // 34
    new Day(4, 16, 2008),
    [
      new Topic("Register renaming"),
      new LocalWeb("cs2521", "lectures/register-renaming.html", "Register Renaming")
    ],
    [
    ]
  ),
  new Meeting(  // 35
    new Day(4, 18, 2008),
    [
      new Topic("Register renaming"),
      new LocalWeb("cs2521", "lectures/register-renaming-example.html", "Register Renaming Examples")
    ],
    [
    ]
  ),
  new Meeting(  // 36
    new Day(4, 21, 2008),
    [
      new Topic("Caching principles"),
      new ReadText("P&H Ch. 7.1, 7.2"),
      new LocalWeb("cs2521", "lectures/caching.html", "Caching")
    ],
    [
    ]
  ),
  new Meeting(  // 37
    new Day(4, 23, 2008),
    [
      new Topic("Cache organization and performance"),
      new ReadText("P&H Ch. 7.3"),
      new LocalWeb("cs2521", "lectures/cache-addressing.html", "Cache Addressing"),
      new LocalWeb("cs2521", "lectures/cache-performance.html", "Cache Performance")
    ],
    [
    ]
  ),
  new Meeting(  // 38
    new Day(4, 25, 2008),
    [
      new Topic("Virtual memory"),
      new ReadText("P&H Ch. 7.4"),
      new LocalWeb("cs2521", "lectures/caching.html", "Caching"),
      new LocalWeb("cs2521", "lectures/virtual-memory.html", "Virtual Memory")
    ],
    [
    ]
  ),
  new Meeting(  // 39
    new Day(4, 28, 2008),
    [
      new Topic("Disk storage, dependability"),
      new ReadText("P&H Ch. 8.1, 8.2"),
      new WorldWideWeb(
      "http://www.seagate.com/www/en-us/products/servers/barracuda_es/barracuda_es.2/",
      "Barracuda\u00ae ES.2 Hard Drives"
      ),
      new WorldWideWeb(
      "http://www.lascon.co.uk/d008005.htm",
      "RAID Levels"
      )
    ],
    [
    ]
  ),
  new Meeting(  // 40
    new Day(4, 30, 2008),
    [
      new Topic("Processor-peripheral interconnection"),
      new ReadText("P&H Ch. 8.3-8.5"),
      new LocalWeb("cs2521", "lectures/network-layers.html", "Network Layers"),
      new WorldWideWeb(
      "http://www.howstuffworks.com/motherboard.htm",
      "How Motherboards Work"
      ),
      new WorldWideWeb(
      "http://www.intel.com/products/desktop/chipsets/index.htm?iid=chips_body+desk",
      "Intel\u00ae Desktop Chipsets Product List"
      )
    ],
    [
    ]
  ),
  new Meeting(  // 41
    new Day(5, 2, 2008),
    [
      new Topic("Multiprocessors"),
      new ReadText("P&H Ch. 9.1, 9.2")
    ],
    [
    ]
  ),
  new Meeting(  // 42
    new Day(5, 5, 2008),
    [
      new Topic("Multiprocessor caching"),
      new LocalWeb("cs2521", "lectures/coherence.html", "Cache Coherence")
    ],
    [
    ]
  ),
  new Meeting(  // 43
    new Day(5, 7, 2008),
    [
      new Topic("Recent trends in processors"),
      new WorldWideWeb(
      "http://en.wikipedia.org/wiki/System-on-a-chip",
      "System-on-a-chip - Wikipedia, the free encyclopedia"
      ),
      new WorldWideWeb(
      "http://focus.ti.com/dsp/docs/blockdiagram.tsp?sectionId=3&tabId=409&techDoc=8&blockDiagramId=6004&familyId=44",
      "Technical Documents from Texas Instruments"
      )
    ],
    [
    ]
  ),
  new Meeting(  // 44
    new Day(5, 9, 2008),
    [
      new Discussion(EX, 3)
    ],
    [
    ]
  ),
  new Meeting(  // 45
    new Day(5, 12, 2008),
    [
    ],
    [
      new GradeEvent(EX, 3)
    ]
  )
]);
lecture.summaryText = "Lecture meets in " + term.lecturePlace +
    " on " + term.lectureTimes;

// Laboratory meetings, 14 meetings.
// Suitable for Fall Tu, W, Th, or F.

var laboratory = new MeetingList("Laboratory", [
  new Meeting(  // 1
    new Day(1, 28, 2008),
    [
      new Topic("MIPS and spim/xspim"),
      new ReadText("P&H App. A.9, A.10"),
      new LocalWeb("spimsal", "spim.html", "Using SPIM and XSPIM"),
      new Discussion(HW, 1),
      new Discussion(PA, 1)
    ],
    [
    ]
  ),
  new Meeting(  // 2
    new Day(2, 4, 2008),
    [
      new Discussion(HW, 2),
      new Discussion(PA, 2)
    ],
    [
      new GradeEvent(HW, 1),
      new GradeEvent(PA, 1)
    ]
  ),
  new Meeting(  // 3
    new Day(2, 11, 2008),
    [
      new Discussion(HW, 3),
      new Discussion(PA, 3)
    ],
    [
      new GradeEvent(HW, 2),
      new GradeEvent(PA, 2)
    ]
  ),
  new Meeting(  // 4
    new Day(2, 18, 2008),
    [
      new Discussion(HW, 4)
    ],
    [
      new GradeEvent(HW, 3)
    ]
  ),
  new Meeting(  // 5
    new Day(2, 25, 2008),
    [
      new Discussion(HW, 5),
      new Discussion(PA, 4)
    ],
    [
      new GradeEvent(HW, 4),
      new GradeEvent(PA, 3)
    ]
  ),
  new Meeting(  // 6
    new Day(3, 3, 2008),
    [
      new Discussion(HW, 6)
    ],
    [
      new GradeEvent(HW, 5)
    ]
  ),
  new Meeting(  // 7
    new Day(3, 10, 2008),
    [
      new Discussion(HW, 7),
      new Discussion(PA, 5)
    ],
    [
      new GradeEvent(HW, 6),
      new GradeEvent(PA, 4)
    ]
  ),
  new Meeting(  // 8
    new Day(3, 24, 2008),
    [
      new Discussion(HW, 8)
    ],
    [
      new GradeEvent(HW, 7)
    ]
  ),
  new Meeting(  // 9
    new Day(3, 31, 2008),
    [
      new Discussion(HW, 9),
      new Discussion(PA, 6)
    ],
    [
      new GradeEvent(HW, 8),
      new GradeEvent(PA, 5)
    ]
  ),
  new Meeting(  // 10
    new Day(4, 7, 2008),
    [
      new Discussion(HW, 10)
    ],
    [
      new GradeEvent(HW, 9)
    ]
  ),
  new Meeting(  // 11
    new Day(4, 14, 2008),
    [
      new Discussion(HW, 11),
      new Discussion(PA, 7)
    ],
    [
      new GradeEvent(HW, 10),
      new GradeEvent(PA, 6)
    ]
  ),
  new Meeting(  // 12
    new Day(4, 21, 2008),
    [
      new Discussion(HW, 12),
      new Discussion(PA, 8)
    ],
    [
      new GradeEvent(HW, 11),
      new GradeEvent(PA, 7)
    ]
  ),
  new Meeting(  // 13
    new Day(4, 28, 2008),
    [
      new Discussion(HW, 13)
    ],
    [
      new GradeEvent(HW, 12)
    ]
  ),
  new Meeting(  // 14
    new Day(5, 5, 2008),
    [
    ],
    [
      new GradeEvent(HW, 13),
      new GradeEvent(PA, 8)
    ]
  )
]);
laboratory.summaryText = "Laboratory meets in " + term.laboratoryPlace +
    " on " + term.laboratoryTime + ".";

lecture.setGradedWorkDates();
laboratory.setGradedWorkDates();

Dynamic.addType("Meetings", function() {
  var section = createNavSection("Meetings");
  section.appendChild(lecture.buildSection());
  section.appendChild(laboratory.buildSection());
  return section;
});

Dynamic.addType("Graded Work", function() {
  var section = createNavSection("graded", "Graded Work");
  section.appendChild(HW.buildSection());
  section.appendChild(PA.buildSection());
  section.appendChild(EX.buildSection());
  return section;
});


