|
|
|
|
Course Overview
|
|
Required
- CSE 143: Familiarity with writing, running, and debugging
Java programs. Familiarity with common programming
language features (e.g., operator precedence, variables and scope,
methods/procedures).
Appreciation of the importance of data structures.
(We won't be programming in Java, though.)
Generally Useful
- We'll be programming in C on Linux, so any familiarity you have with
those is a plus. (None is required, though.)
back to top
|
|
This is a new course, part of the newly redesigned undgraduate third year course structure.
The list below is the set of goals set when designing the course.
- Number representation: Twos
complement, signed vs. unsigned, floating point (1 week)
- Assembly (2 weeks)
- Memory vs. registers
- Instruction format
- Control structures in assembly
(loops, procedure call)
- C (2 weeks)
- Pointers, arrays, strings
- memory management, malloc/free,
stack vs. heap
- structs
- Compilation, linking, libraries
(code across multiple files) (< 1 week)
- The process model (what the O/S provides, not how it provides it) (1 week)
- Virtualization and isolation (including virtual memory)
- Components of a process state / notion of a context switch
- System calls
- Asynchronous signals
- High-level machine architecture (1 week)
- Register file
- Instruction cycle
- Caching / memory hierarchy
- The Java-to-C connection (1 week)
- Representing an object as pointer to struct with pointer to method-table; performing a method call
- Constructors as malloc-then-initialize
- Garbage collection via reachability from the stack
- Java array-bounds-checking via array-size fields
- Parallelism / multicore / pthreads (1 week)
back to top
|
|
There will be three kinds of
assignments given throughout the class:
- Textbook Reading: you will be given reading
assignments from the course textbook associated with each lecture. You
should try to finish the reading before coming to the lecture.
We will be covering a large fraction of the topics in the text. It won't
be easy to catch up if you fall behind.
- Textbook(-style) questions:
Some assignments may include questions
from the text, occasionally supplemented with similar questions I invent.
- Programming: We'll be doing C programming, on Linux.
You won't end up a master of either C or Linux, but you'll be well posed to become one.
This quarter I'm encouraging the use of the CSE home Linux virtual machine for the programming assignments.
This is a 4 credit hour course, meaning that it deserves something like
12-16 hours of
your undivided attention per week. Try to reserve hours for the reading and stick to
your schedule, even if some programming assignment that isn't going as well as you expected
(i.e., all of them, for all of us) is coming due shortly.
back to top
|
|
There will be
one midterm and a final exam for this course. The dates are listed on
the course calendar. The midterm date is subject to change (with reasonable advance notice given).
back to top
|
|
Grades will be assigned roughly as follows:
- Homeworks: 55%
- Midterm: 15%
- Final: 30%
back to top
|
|
(Many of these policies are taken
verbatim from previous instances of this course.)
- Late Policy: There is a 10% penalty for each
late day, or portion thereof. You get two free late days - two days of lateness
with no penalty - to use at your discretion.
- Reasonableness: No set of rules
can apply perfectly in every setting. Reasonable exceptions can be made.
- Cheating vs. Collaboration:
Collaboration is a very good thing. On the other hand, cheating is considered
a very serious offense, and is vigorously prosecuted. Vigorous prosecution
requires that you be advised of the cheating policy of the course before the offending
act. For this course, the policy is simple: don't cheat. You know it when you're doing it.
We'll recognize it when you do it.
That said, collaborating is, for many people, an effective way to learn. Learning
isn't cheating. Misrepresenting that you've learned something, or done the work
that implies you've learned something, almost certainly is.
|
back to top
|
|