Course Syllabus

This course provides students with a perspective on the core ideas of computation and the methodology central to the practice of computing by:

  1. engaging students with computational models in a variety of disciplines,
  2. exposing the core elements of computation and algorithms that underlie these models, and
  3. working with data streams that have real-world characteristics (real-time, complex, and/or large scale).

The fundamental ideas of computation are illustrated by an introduction to algorithmic thinking and a basic skill in a practical programming language. In addition, the social, political, and/or ethical impacts and implications are briefly examined.

This is a general education course open to all majors. While it introduces a widely used programming language, it is not a programming class. The intent is to provide some basic skill in programming, but not at the level of a typical programming class. Moreover, this course does not satisfy any prerequisite in the Computer Science curriculum. However, this course does prepare students for further study in Computer Science, should they choose to.

Prerequisites and Co-requisites

None.

Student Computer

Because of the heavy reliance on online materials, all students are required to have a computer to use. All software in the class is multi-platform, so Windows, Mac, and Linux systems are accommodated. However, students will need to be able to install software onto their computers. Therefore, more limited devices like Chromebooks and tablets  (e.g., iPads, Fire) may not be acceptable. 

Texts and Materials

All readings, in-class work, and homework problems are contained in a freely available Canvas course.

There is no separate textbook required for this course.

The course will also use freely-available, multi-platform software for conducting computational simulations of complex models, interfaces for accessing data streams that are real-time, complex, or large scale, and systems for composing and executing programs in a practical programming language. Assistance will be provided to install this software on your computer.

Grading

Student performance in the course will be evaluated according to the weights in the following table.

Assignment Percent Evaluation
In-class work and homework 60% This work is evaluated based on a credible effort to complete each assignment.
Project 20% This month-long project is evaluated by a rubric assessing the quality and completeness of the project.
Attendance 10% This work is evaluated by recorded attendance. 
Reading Quizzes 10% This work is evaluated by credible effort to demonstrate understanding of the required readings.

A student completing a credible project will receive a passing grade in the class. Higher grades require consistent attendance and consistent completion of assigned classwork and homework.

Noticeable lack of attendance or lack of cohort participation will result in a lower grade.

The due data for the final project is 8:00AM on Monday, May 2, 2016.

Topics

The major topics in the course are shown in the table below.

Length Topic Description
4 weeks Computational Modelling Use of a highly structured simulation environment to study how a complex pattern of global behavior arises from the interaction of many “agents”, each operating according to local rules. Students analyze case-based reasoning and encounter basic computation constructs in this highly supportive environment.
3 weeks Algorithms Study of the basic constructs of algorithmic logic (sequence, decisions, iteration) and program organization (parameterized functions). A graphical programming environment is used to avoid syntactic details. Students see how these constructs are expressed in the Python programming language.
4 weeks Python and Big Data Project-based exploration of complex phenomena by algorithmically manipulating large-scale and/or real-time data streams from real-world sources. Students construct algorithms in the Python language within a framework that provides a supportive environment for accessing the data streams. Techniques for building basic visualizations are explored.
  Social Impacts Study, discussion, and reflection on the social impacts of computing and information technology will be interlaced with the topics above.

Two major topics, topics 1 and 3, are based on the study of models or the use of data streams that are applicable across a wide range of majors. These two topics provide a framework within which students learn critical elements of computational thinking. The goal is to develop a capacity for computational thinking by engaging in the analysis of computer models. These models employ computational techniques to produce emergent behavior and programming to analyze large-scale data. The second topic, Algorithms, expands the student’s notion of algorithms beyond the very structured and stylized algorithms encountered in the first topic and lays the foundation for developing algorithms to be used in the third topic. A major project using big data streams and programming solidifies the computational concepts. Woven throughout the technical topics is the consideration of the societal impacts of computing. Students are guided through discussion and reflection on how the power of computing technology affects society and individuals.

Attendance, Collaboration, and the Honor Code

Much of the learning experience of the course occurs in-class. Therefore, it is important that students attend every class. The in-class work involves collaboration with other students. Students are expected to actively engage in this work. Noticeable lack of attendance or lack of collaboration will result in a lower grade.

Students are allowed and encouraged to collaborate in specific ways on the homework assignments and project. You can collaborate on understanding ideas and resolving specific problems. However, the final submitted result is meant to reflect individual student work under the Virginia Tech Honor Code . The project contains a specific section to acknowledge support obtained through collaboration. Ask the instructor if you have any doubts about the appropriateness of any collaboration.

Students with Disabilities

The instructors are pleased to make arrangements for students with disabilities. Students needing special accommodation because of a disability should provide to the instructor during the first week of class an appropriate letter from the Services for Students with Disabilities office. Also, if you have emergency medical information to share with the instructor, or if you need special arrangements in case of emergencies, please meet with the instructor as soon as possible.

List of Assignments

Course Summary:

Date Details Due