Edx Computer Science Fundamentals Syllabus
Edx Computer Science Fundamentals Syllabus
Edx Computer Science Fundamentals Syllabus
Spring 2020
Professors: Daniel Katz-Braunschweig, Itay Tal, Rafail Portnoy, Aspen Olmsted
Teaching Assistants: Victoria Zhong
Course Description
This is a self-paced optional course that provides an undergraduate-level introduction to
the basics of computing & programming, computer hardware & operating systems, and
computer networking, that will help to prepare students for advanced undergraduate
computer science course work.
Course Objectives
By the end of this course students should be able to:
● Describe how data is represented and how computers execute instructions to use
and modify data in order to solve problems.
● Use the principle of computational thinking: how to develop algorithms using
decisions, repetition, and decomposition into manageable components to solve
problems.
● Implement and test moderate sized programs in the Python programming
language, using constructs including variables, operators, decision statements,
loops, functions, andbuilt-indata types (numbers, strings, lists, tuples,
dictionaries).
● Describe state-of-the-art in network protocols, architectures, and applications
● Process networking research
● Take into account the constraints in the thought process of networking research
Course Structure
This course is conducted entirely online, which means you do not have to be on
campus to complete any portion of it. You will participate in the course using edX
located at https://edx.org.
1
- Forum discussions, asynchronous;
- Resource links
*Consult with edx Online for further details about Active Learning Modules.
*Asynchronous learning is defined as any non-real time student learning, such as recorded lecture, podcast,
interactive module, articles, websites, etc. This also includes any student-to-student or faculty-to-student
communication that may happen with an asynchronous tool, such as discussion board, chatroom, e-mail, text,
etc.
**Synchronous learning is defined as any real-time student-to-student and/or faculty-to-student learning,
such as a live webinar session or other video/audio communication service.
Course Communication
Announcements -
Announcements will be posted on edX on a regular basis. You can locate all class
announcements under the Announcements tab of our class. Be sure to check the class
announcements regularly as they will contain important information about class
assignments and other class matters.
Discussion forums are an excellent way for you to engage with the course material and
with your peers. You are expected to read the discussion boards and engage in thoughtful
2
discussions. I will read all discussion posts and provide content clarification and feedback
when necessary.]
Netiquette –
Interaction Policy
You are required to be an active online learner in this course and expected to participate
in the Active Learning Modules, weekly discussion boards, virtual office hours, after
having completed the readings.
Course requirements
Participation is paramount to your success in this course. Be sure to log into edX multiple
times a week, read all announcements, complete all Active Learning Modules, and
participate in Discussion Forums.
Course evaluation will consist of by-module programming assignments, quizzes and final
exams. The quizzes, providing multiple attempts, without proctoring. The final exams
are closed books and utilize an online proctor.
Unit Outcomes:
● understand the von Neumann model of a computer system.
● understand the basic operations and terminology associated with the
CPU component
3
● understand the basic operations and terminology associated with memory
organization
● understand the basic operations and terminology associated with disk
drives
● understand the basic operations and terminology associated with various
IO devices
● understand modern operating systems structure
Unit Outline:
1. Fundamentals of system hardware
2. Introduction to OS concepts
3. Processes & threads
4. Thread concurrency and deadlocks
5. Memory management
Unit Outcomes:
● understand binary number systems and conversion to other number
systems
● understand hexadecimal number systems and conversion to other
number systems
● apply numeric and string data types to represent information
● apply variables in program development
● analyze assignment and apply its components in program development
● apply basic I/O operations with different data types
● design expressions using arithmetic operations (including understanding
their limitations, such as integer truncation, round-off error, division by
5
zero, narrowing and widening conversions, casting, precedence, and
standard math library functions)
● design expressions using relational operators (including understanding
floating point equality)
● design expressions using logical operators (including short-circuit)
● design selection statements (including nested selection)
● design repetition statements (including count-controlled versus
event-controlled, sentinel-controlled)
● design simple data structures using lists (including using loops with lists
and multi-dimensional lists
Unit Outline:
1. Positional number systems
2. Hello World
3. Numerical data types and arithmetic expressions
4. Branching statements
5. Iterative statements [Loops]
6. Strings
7. Functions
8. Lists [Array-based sequences]