Difference between revisions of "CSC231 Syllabus 2012"
(→Teaching Assistants) |
|||
Line 73: | Line 73: | ||
− | <font size="2">Lectures: Monday, Wednesday, Friday 11:00 - | + | <font size="2">Lectures: Monday, Wednesday, Friday 11:00 - 11:50 p.m., '''<font color="#FF0000">FH 342 </font>'''</font> |
---- | ---- |
Revision as of 12:23, 6 September 2012
--D. Thiebaut 10:53, 24 August 2012 (EDT)
<meta name="keywords" content="computer science, assembly language, pentium, linux, programming" />
<meta name="description" content="Dominique Thiebaut's Web Page" />
<meta name="title" content="Dominique Thiebaut -- Computer Science" />
<meta name="abstract" content="Dominique Thiebaut's Computer Science Web pages" />
<meta name="author" content="thiebaut at cs.smith.edu" />
<meta name="distribution" content="Global" />
<meta name="revisit-after" content="10 days" />
<meta name="copyright" content="(c) D. Thiebaut 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,2008,2009,2010,2011,2012" />
<meta name="robots" content="FOLLOW,INDEX" />
Microcomputers and Assembly Language
CSC 231, Fall 2012
(http://cs.smith.edu/dftwiki/index.php/CSC231_Syllabus_2012)
Contents
Prof
Dominique Thiébaut
Ford Hall, 356.
Telephone: 3854
Office hours Tu-Th: 2:00-4:00 p.m. and by appointment.
Go to the class Class Homepage for exercices, demo programs, and misc. information.
Introduction
CSC231, Microcomputers and Assembly Language, is a 4-credit course required for the major. It is usually offered in the fall, and is the third computer course most CS majors will select, after having taken CSC111 and CSC112, both prerequisites for CSC231.
Similarly to CSC111 and CSC112, Micro and Assembly Language is a programming intensive class, where students learn how the high-level constructs of C, C++, or Python programs are executed by the computer: procedure calls and parameter passing, stack use and recursion. The class is also an introduction to the organization of the Intel 80X86/Pentium family of processors, and to the architecture of the IBM PC. Students write programs that directly control the microprocessor and the different hardware components inside the computer. The programming environment is Linux, and we use the NetWide Assembler (NASM) to assemble programs. Working on homework assignments will require using computers in one of several ways:
- Using a Windows or Mac computer and connecting to the main Linux computers of the CS department (grendel.csc.smith.edu, or beowulf.csc.smith.edu) as was done for the CSC111 or CSC112 classes.
- Using one of the PCs in the Science Center, restarting it and selecting Linux as the operating system, and using the NASM assembler directly.
- Installing Linux on your own PC, then installing NASM on it.
In short, any PC compatible in Ford Hall, or connected to one of the Novell networks on campus can be used to access our Unix environment and work on CSC231 assignments.
We will also use the DDD debugger, the emacs editor (or your favorite editor) and various other unix utilities.
Prerequisites
CSC111, Introduction to computer science, and CSC212, Data structures. Students should also have a good understanding of the binary and hexadecimal systems, which will be reviewed briefly during class.
Schedule and Material Covered
The class meets 3 times a week, MWF 11-12:10 p.m., and programming assignments are given regularly. Approximately 12 homework assignments can be expected this semester. There will be an in-class midterm exam and a final take-home exam.
The course covers the following topics:
- The 80X86/Pentium family of processors.
- Data manipulation instructions.
- Binary arithmetic.
- Introduction to system calls. Input/output operations.
- Procedure calls.
- Stack operations and parameter passing.
- Arrays.
- String operations.
- Dynamic memory allocation and pointers.
- Unix internals. More system calls.
- Hardware interrupts and device drivers.
Class Time
Lectures: Monday, Wednesday, Friday 11:00 - 11:50 p.m., FH 342
TextBook
There are no textbooks to buy for for the class. Instead we will rely on on-line documents:
- The NASM Manual (http://alien.dowling.edu/~rohit/nasmdoc0.html)
- Paul Carter's assembly language tutorial. Paul Carter's page can be found at http://www.drpaulcarter.com/.
- The Art of Assembly Language. It assumes a different assembler, and hence a different syntax, but has a lot of very good information. You may, however, prefer to read a book, in which case these additional titles of interest in the Young Science Library might be useful:
- Wyatt Allen, Advanced assembly language. QA76.73.A8 W88 1992
- Fohl, Mark, An assembly language course. QA76.73.A8 F63 1982
- Lemone, Karen, Assembly Language and System Programming for the IBM PC.
Other Sources
Check the Class Homepage for details.
Assignments and Lateness Policy
No late assignments will be accepted (except in case of documented illness or personal difficulties). The assignments are tentatively scheduled to be due every Wednesday evening at midnight.
One assignment can be dropped during the semester without penalty.
Three unsubmitted assignments will result in failing the course.
Grading Policy
- Homework assignments 60%, Midterm 15%, Final Exam 25%.
Class Wiki
- During the semester, students may create Wiki pages relating to different projects. The wiki pages can be found here.
Teaching Assistants
- Emily Flynn (eflynn at smith.edu)
- Kristina Fedorenko