Git Product home page Git Product logo

cs211's Introduction

CS211

CS211 Rutgers w/ Santosh Course Description

This course covers materials to illustrate how a high level program is converted to binary and is eventually executed by the hardware. We will cover a brief introduction to programming in C, how data and control represented in C is converted to binary and how the binary code is executed by the processor. This will involve programming in C, understanding and debugging X86 assembly, interfaces between the hardware and the software components, organization of hardware and how the various components interact.

Von Neumann architecture, hardware trends, performance, energy, cost metrics
Introduction to C programming
Assembly language techniques and instruction-set design
Boolean algebra, digital logic
The memory hierarchy
Performance
Input/Output concepts

Prerequisites

CS 112 is a pre-requisite for this course.

Textbooks

Required: R.E.Bryant and D.R.O'Hallaron, Computer Systems: A Programmer's Perspective, Prentice Hall, Third edition. Students can probably also use the second edition of the book.

Recommended: D.A.Patterson and J.L.Hennessy, Computer Organization and Design: The Hardware/Software Interface, Morgan Kauffman

Note that while this textbook is recommended, we will use portions of it for various lectures.

Recommended for C: B.W.Kernighan and D.M.Ritchie, The C Programming Language, Prentice Hall

Note that while this is the classic reference for C, there are a number of online references available as well. For example, here is a free C online reference http://publications.gbdirect.co.uk/c_book/
While you are welcome to use these resources, note that we have not seen them ourselves and cannot attest to the usefulness of these references.

Grading

Midterm exams -- 15%

Final exam -- 30%

Class participation -- 5%

Programming assignments -- 50%

Programming Assignment Policies

There will be numerous programming assignments to improve your understanding of the subject.

Programming assignments will be handed in via Sakai. We will provide instructions for packaging and handing in your assignments. You must follow these instructions exactly. If we cannot compile or run your programs, you will lose a significant portion of points.

We will not accept late assignments. Programming assignments must be handed in by the specified time/date on Sakai.

If you don't already have an account on the Instructional Laboratory cluster go to

https://www.cs.rutgers.edu/resources/instructional-lab

and create one. iLab machines are located in Hill 248, 250, 252, and 254. All registered students have access to these rooms.

In addition, there are a number of references to help you understand how to use the iLab systems. Please look at:

https://www.cs.rutgers.edu/resources/instructional-lab

You will be using a Unix environment for the programming assignments. For a primer on using the Bash environment, please refer to http://tldp.org/LDP/Bash-Beginners-Guide/html/index.html For an assortment of GNU/Linux command line tools, refer to this: http://www.tldp.org/LDP/GNU-Linux-Tools-Summary/GNU-Linux-Tools-Summary.pdf

Some other manuals that will be useful: http://www.gnu.org/software/emacs/manual

(Emacs) http://gcc.gnu.org/onlinedocs/

(Make) http://www.gnu.org/software/make/manual/

(Gdb) http://www.gnu.org/software/gdb/documentation

Homework Assignment Policies

Handed in at the lecture. Late assignments will not be accepted.

Rules for Collaboration

You are free, even encouraged, to talk to your fellow classmates about your assignments. However, you cannot copy from one another in the assignments. If in doubt, follow Gilligan's Island rule. That is, after a joint discussion of an assignment, each student should discard all notes, go do something mind-numbing for an hour (like watching a couple of episodes of Gilligan's Island), and then recreate the solutions absolutely individually. The idea is to ensure that you fully understand and provide your own solutions, rather than blindly incorporate the solutions from the group discussion. We will use sophisticated plagiarism detection software and report any violation to office of student conduct.

You must also follow the Department's Academic Integrity Policy: https://www.cs.rutgers.edu/academic-integrity/introduction

Finally, copying from the web is also cheating.

Syllabus

September 5 , 2018 -- Lecture 1: Introduction and Hardware Trends Required Reading: Chapter 1 of the text book

September 10, 2018 (K&R)-- Lecture 2: C Programming

September 12, 2018 (K&R)-- Lecture 3: C Programming

September 17, 2018 (K&R)-- Lecture 4: C Programming

September 19, 2018 (K&R) -- Lecture 5: C Programming

September 24, 2018 (K &R) - Lecture 6: C Programming

September 26, 2018 (K & R) : Lecture 7: C Programming

October 1, 2018: Lecture 8 : Data Representation Reading material: Chapter 2:Introduction, 2.1 (skip 2.1.7), 2.2, 2.4-2.4.3)

October 3, 2018: Lecture 9: Data Representation Reading material: Chapter 2: 2.1, 2.2, 2.3, 2.4-2.4.3, 2.5

October 8, 2018: Lecture 10 (Chapter 3: Everything but 3.14) -- Assembly Language Programming

October 10, 2018: Lecture 11 -- Assembly Language Programming

October 15, 2018: Lecture 12 -- Assembly Language Programming

October 17, 2018: Lecture 13 -- Assembly Language Programming

October 22, 2018: Lecture 14 - Assembly

October 24, 2018 -- Lecture 15 - Assembly Language Programming

October 29, 2018 -- Lecture 16- Assembly Language Programming

October 31, 2018 : Lecture 17 -- Assembly

November 5, 2018: Lecture 18 - Assembly

November 7, 2018: Midterm

November 12, 2018: Lecture 19 -- Digital Logic

November 14, 2018: Lecture 20 - Digital Logic

November 19, 2018 - Lecture 21 - Digital Logic

November 26, 2018 - Lecture 22 -- Digital Logic

November 28, 2018 - Lecture 23 -- Digital Logic

December 3, 2018 - Lecture 24 -- Digital Logic

December 5, 2018 - Lecture 25 -- Digital Logic

December 10, 2018 - Lecture 26 -- Cache Design

December 12, 2018 - Lecture 27 -- Cache Design

Acknowledgments

This course borrows heavily from CS 211 taught by Prof. Abhishek Bhattacharjee, Prof. Thu Nguyen (Rutgers CS), and Prof. Badri Nath (Rutgers CS)

cs211's People

Contributors

arjpat avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.