CSC231 Syllabus 2014
--D. Thiebaut 10:53, 28 August 2014 (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,2014" />
<meta name="robots" content="FOLLOW,INDEX" />
Microcomputers and Assembly Language
CSC 231, Fall 2014
(http://cs.smith.edu/dftwiki/index.php/CSC231_Syllabus_2014)
|
Professor
Dominique Thiébaut |
Go to the class Class Homepage for exercises, demo programs, and misc. information.
Course Description
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 beowulf2.csc.smith.edu) as was done in the 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 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 twice a week, TuTh 9-10:20 a.m., and programming assignments are given regularly. Most of them will be given on Moodle. There will be an in-class midterm exam and a final take-home exam.
The course covers the following topics:
- Emacs
- The 80X86/Pentium family of processors.
- Logic gates, binary logic.
- Data manipulation instructions.
- Binary arithmetic. Integer format.
- Introduction to system calls. Input/output operations.
- Function calls.
- Stack operations and parameter passing. Passing by value, by reference.
- Arrays.
- String operations.
- IEEE Floating Point format.
- Unix internals. More system calls.
- Hardware interrupts and device drivers.
Class Time
Lectures: Tu, Th, 9-10:20 a.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
Many assignments will be submitted to Moodle. You need to verify that you can login to Moodle before being able to submit assignments.
No late assignments will be accepted (except in case of documented illness or personal difficulties). The assignments will usually be due a week after they are posted, but it is your responsibility to know the due date and due time for the assignments.
One assignment can be dropped during the semester without penalty.
Missing 4 or more assignments during the semester will result in failing the course.
Grading Policy
- Homework assignments (and labs) 50%, Midterm 15%, Final Exam 25%, and participation 10%.
- Questions and answers given in class, posting questions or answers on Piazza, helping others in labs, all count toward participation.
Piazza
- We'll use Piazza during the semester to share information about the course material, about homework assignments, labs, and other class-related questions.
- Students who pre-registered for the class are already signed-up for Piazza. If you registered after the first day of class, please sign-up here.
- Participation in Piazza will count toward the participation grade.
Class Wiki
- During the semester, students may create Wiki pages relating to different projects. The wiki pages can be found here.
Teaching Assistant
- Gan Adriane
- Please check this page for current hours for the TAs.