Courses/Computer Science/CPSC 355.W2014/Policies

= Office Hours =

Mondays 10:15-12:15 in ICT 643

= Topics / Syllabus =

This link provides an overview of the concept map for this class (PDF file).

The course will cover roughly these general topics, time permitting:


 * basic computer organization: CPU, devices, memory, busses
 * computer architecture; data path, CPU organization
 * an example ISA like Sparc and x86
 * the fetch-decode-execute cycle
 * pipelining
 * assembly programming
 * translation of source-level control artifacts (loops, branches) to assembly
 * translation of source-level data artifacts (variables, tables, state, stack, etc.) to assembly
 * the ELF format
 * digital logic (review of)
 * number systems: base 2, 8, 10, 16
 * binary arithmetic and its implementation
 * memory addressing
 * instruction set and format, opcodes, operands
 * routines, subroutines, control flow support and ABI-level contract for calling conventions
 * floating point (time permitting)

= Textbook =

I require two textbooks for this course because it provides a concentration of peer-reviewed material and background reading to aid your studying. The second textbook also provides a very readable guide to C programming.


 * SPARC Architecture, Assembly Language Programming, and C -- by Richard P. Paul
 * The C Programming Language, -- by K&R

I only recommend books that I keep on my own shelf. You may get these at the school bookstore or any other source (e.g., Amazon) that you feel gives you the best price and delivery.

You may also be interested in this guide to user-level programming:


 * Advanced Programming in the Unix Environment by Richard W. Stevens

but it is in no way required for this course.

= Midterm Exam =

A midterm exam will take place on February 5. Let me know ASAP if you have conflicts with this date.

= Final Exam =

There is no final exam. There is, however, a cumulative project for this course worth 30% of your grade.

You will be required to:


 * early in the semester, submit your test suite of programs
 * 2 weeks before the end of semester, submit your project code for informal feedback
 * during the last 2 weeks, demonstrate your project directly to the professor
 * immediately after the in-person review/demo, you will submit your complete project code

= Grades =

You have 1000 points available to earn this semester.

Your performance in this class will be assessed with the following items:


 * Programming assignments (x6) : 60% of your grade (600 points total)
 * In class exam (x1): 10% of your grade (100 points)
 * Project : 30% of your grade (300 points)

Students can earn up to 1000 points for the semester’s work. Each item (tests, assignments, projects, etc.) will be given a numerical score out of total points.

The final percentage grade will be calculated by summing the total points you earn divided by 1000. This percentage will then be converted to a final letter grade for the University grading system. Percentage scores at or above 98% will receive an A+, while those at or above 94% will receive an A, and those at or above 90% will receive an A-. Percentage scores at or above 87% will receive a B+, while those at or above 83% will receive a B, and those at or above 80% will receive a B-. Percentage scores at or above 75% will receive a C+, while those at or above 70% will receive a C, and those at or above 65% will receive a C-. Among passing scores, those below 65% will receive a D. Percentage scores below 60% will receive an F.

98-100 A+ 94-97   A 90-93   A- 87-89   B+ 83-86   B 80-82   B- 75-79   C+ 70-74   C 65-69   C- 60-64   D 0-59    F

= Assignment Policies =

The project and each homework assignment should be completed alone.

Assignments are a mixture of programming tasks and written questions. Some assignments may not have a written answers component.

Late work is not accepted, barring an extraordinary personal emergency (these should be rare, and will be dealt with fairly and with common sense). You have until 11:59pm Mountain Time on the due date to submit your answers and code. It is much better to submit partially complete work than to expect or depend on an extension.

Assignments vary in difficulty, but they will be graded on the same scale.

All programs must compile (i.e, `make' succeeds with no warnings). Assignments that don't compile will be awarded a grade of zero.

You must cite all sources of information (web sites, books, articles). For example, if you found a particular implementation trick from an online article, you should give the URL and date accessed and identify the code snippet or explanation you used in formulating your answer or code. Not doing so will be considered plagiarism and your assignment will receive a grade of zero and be forwarded to the departmental process responsible for dealing with cheating and plagiarism.

Submission Process
Submission Process: Submissions of homework assignments will be done via svn. The mechanics of this will be covered in a tutorial.

More details: http://pages.cpsc.ucalgary.ca/~locasto/teaching/2014/CPSC355/SUBMIT-HOWTO

= Announcements =

Course announcements will be posted via Piazza.