Fall 2020
	      CPSC 323a - Introduction to Systems Programming
			    and Computer Organization
Instructor
~~~~~~~~~~
  Stanley C. Eisenstat, 208 Watson (432-1246) <sce@cs.yale.edu>
    Office hours (via Zoom): TBA & by appointment (see https://sce.cs.yale.edu)

Teaching Fellow (Office Hours via Zoom: TBA)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Richard Habeeb <richard.habeeb@yale.edu>

Undergraduate Learning Assistants (Office Hours via Zoom: TBA)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  TBA

Textbooks
~~~~~~~~~
  John L. Hennessy and David A. Patterson, "Computer Architecture:
    A Quantitative Approach", 6th edition, Morgan Kaufman, 2017
    ($82.46 @ Amazon / on-line @ Orbis)

  Neil Matthew and Richard Stones, "Beginning Linux Programming", 4th edition,
    Wrox, 2007 ($31.66 @ Amazon / on-line @ Orbis)

Coursework
~~~~~~~~~~
  The class will NOT meet during reading period.

  There will be 5 assignments requiring an average of 6-9 hours per week (or an
  average of 15-25 hours per C assignment, somewhat less per non-C assignment).
  There will be in-class examinations on Monday, October 12th, and Wednesday,
  December 2nd.

  Homework will constitute ~80% of the final grade; the examinations will
  constitute the remaining ~20%.

Grading
~~~~~~~
  Programs will be submitted electronically and checked using test scripts:  a
  public script, which will generally be available at least one week before the
  assignment is due; and a more comprehensive private script, which will be
  used to assign a grade.  C programs may also be evaluated for "style".

Late Homework Policy
~~~~~~~~~~~~~~~~~~~~
  Programs should be submitted electronically by 2:00 am on the day specified
  in the assignment.  Late work not authorized by a Dean's excuse will be
  assessed a penalty of 5% per calendar day or part thereof and MAY not be
  graded at all if more than ten days late or after solutions are released.
  The submit-times of the sources determine when a program was completed.

  Note:  If a Dean's excuse would authorize an assignment to be submitted more
    than ten days late or after solutions are released, then the student
    MAY be asked to complete an equivalent assignment instead.

Homework/Examination Schedule (tentative)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  What          Value   When Due    Spec    Script  Purpose (Language)
  ~~~~          ~~~~~   ~~~~~~~~    ~~~~    ~~~~~~  ~~~~~~~~~~~~~~~~~~
  Homework #1     60    09/18 (F)   08/31   09/11   fiend
  Homework #2     60    10/02 (F)   09/16   09/25   TBA
  Exam #1               10/12 (M)                   -
  Homework #3     40    10/23 (F)   09/30   10/16   Scripting (TeX)
  Homework #4     60    11/13 (F)   10/21   11/06   LZW
  Exam #2               12/02 (W)                   -
  Homework #5     60    12/11 (F)   11/11   11/04   Shell
			 
Resources
~~~~~~~~~
  Directory:    /home/classes/cs323/*
		  (handouts; test scripts; other files)
  Web Page:     http://zoo.cs.yale.edu/classes/cs323
		  (handouts; links; reachable only within yale.edu domain)
  Newsgroup:    https://sce.cs.yale.edu/News/cs323/index.html
		  (announcements; responses to e-mail)
  Mailing List: http://mailman.cs.yale.edu/mailman/listinfo/cs323
		  (optional; home delivery of newsgroup)

Topics Covered/Emphasized (tentative)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Systems programming in a high level language
    user-level interfaces to a typical operating system (LINUX)
    writing programs (e.g., a shell) that interact with the operating system

  Elementary machine architecture / computer organization
    computer arithmetic and general structure/organization of machines
    approaches to parallelism (vector, SIMD, MIMD, networks)
    instruction set architectures (ISAs) and pipelining instruction execution

  Operating systems
    implications of concurrency and implementation of semaphores
    implementation and ramifications of virtual memory and caches

  Other
    data compression; error detection and correction; computer networks

General Statement on Collaboration
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  Programming, like composition, is an individual creative process in which you
  must reach your own understanding of the problem and discover a path to its
  solution.  During this time, discussions with others (including members of
  the teaching staff) are encouraged.  But see the Gilligan's Island Rule below.

  However, when the time comes to design the program and write the code, such
  discussions are no longer appropriate---your solution must be your own
  personal inspiration (although you may ask members of the teaching staff for
  help in understanding, designing, writing, and debugging).

  Since code reuse is an important part of programming, you may study and/or
  incorporate published code (e.g., from text books or the Net) in your
  programs, provided that you give proper attribution in your source code and
  in your log file and that THE BULK OF THE CODE SUBMITTED IS YOUR OWN.  Note:
  Removing/rewriting comments, renaming functions/variables, or reformatting
  statements does not convey ownership.

  But when you incorporate more than 25 lines of code from a single source,
  this code (prefaced by a comment identifying the source) must be isolated in
  a separate file that the rest of your code #include-s or links with.  The
  initial submission of this file should contain only the identifying comment
  and the original code; revisions may only change types or function/variable
  names, turn blocks of code into functions, or add comments.

  DO NOT UNDER ANY CIRCUMSTANCES COPY SOMEONE ELSE'S CODE OR GIVE A COPY OF
  YOUR CODE TO SOMEONE ELSE OR OTHERWISE MAKE IT PUBLICLY AVAILABLE---to do so
  is a clear violation of ethical/academic standards that, when discovered,
  will be referred to the Executive Committee of Yale College for disciplinary
  action.  Modifying code to conceal copying only compounds the offense.

The Gilligan's Island Rule
~~~~~~~~~~~~~~~~~~~~~~~~~~
  When discussing an assignment with anyone other than a member of the teaching
  staff, you may write on a board or a piece of paper, but you may not keep any
  written or electronic record of the discussion.  Moreover, you must engage in
  some mind-numbing activity (e.g., watching an episode of Gilligan's Island)
  before you work on the assignment again.  This will ensure that you can
  reconstruct what you learned, by yourself, using your own brain.  The same
  rule applies to reading books or studying on-line sources.
								CS-323-08/31/20