Course Syllabus

Learning Objectives and Overview

The specific learning objectives for this course are:

  1. Explain the application of computational or quantitative thinking across multiple knowledge domains.
  2. Apply the foundational principles of computational or quantitative thinking to frame a question and devise a solution in a particular field of study.
  3. Construct a model based on computational methods to analyze complex or large-scale phenomenon.
  4. Identify the impacts of computing and information technology on humanity.

 A principal assessment of the extent to which these learning objectives have been met is through rubric-based evaluation of student projects. 

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 freely available in this (a Virginia Tech) Canvas site. You can access all of the book's sections in the Pages menu of this site. There is no separate textbook required for this course.

The course will also use freely-available, multi-platform software for conducting analysis 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 50% This work is evaluated based on a credible effort to complete each assignment.
Projects 30% There are four project evaluated by a rubric assessing the quality and completeness of the project's work. 
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.

Organization and Due Dates

The course is organized into six modules (see the Canvas Modules view for details). The description and due dates for each module are shown in the following table. No work for a module will be accepted beyond the end of class on the "Closed on" date for that module as shown in the table.

Number Topic Description Classes Closed on
1 Abstraction and Visualization Representing complex, real world phenomenon through information properties; using visualization techniques to answer questions about the phenomenon. 1-4 September 8 
2 Algorithms Study of the basic components of algorithms (action, sequence, decisions, iteration, and state). A block-based programming environment is used to develop algorithms for  small-scale problems. 5-8               September 22                             
3 Algorithms and Big Data

Exploration of complex real-world phenomena by algorithmically manipulating large-scale data sets from real-world sources. A block-based programming environment is used.

9-12 October 6
4 Python

Manipulating and visualizing large-scale data sets that have a complex organization. Algorithms are  constructed in the Python programming language within supportive programming environment. 

13-19 November 1
5 Mini Project A cohort activity to complete a project using an assigned data set. 20-22 November 10
6 Final Project An individual activity to complete a project using a self-selected data set. 23-28 December 5

Woven throughout the modules 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. Study, discussion, and reflection on the social impacts of computing and information technology will be interlaced with the topics above.

There are four projects in the course as described in the following table. The Percent reflects the fractional contribution of each project to the total weight of the projects (30%) in the course.

Project Name Description Percent Start Due
1 Nano An individual activity using a visualization tool to answer questions about a real-world
data set using basic visualizations.
10% September 1 September 8
2 Micro An individual activity to answer questions about a real-world data set through algorithms
constructed in a block-based language.
20% September 29 October 6
3 Mini A cohort activity to complete a project in Python using an assigned real-world data set. 20% October 27 November 10
4 Final An individual activity to complete a project in Python using a self-selected data set. 50% November 8 December 5

Note that the due data for the final project is 8:00 AM on Monday, December 5, 2016.

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 and peer learning with other students in a "cohort" of several students. Students are expected to actively engage with others in their cohort. Noticeable lack of attendance or lack of collaboration will result in a lower grade. Students are allowed and encouraged to collaborate in peer-learning on the classwork and homework assignments. This does not mean simply providing or accepting solutions from others. 

The Undergraduate Honor Code pledge that each member of the university community agrees to abide by states: “As a Hokie, I will conduct myself with honor and integrity at all times. I will not lie, cheat, or steal, nor will I accept the actions of those who do.” Students enrolled in this course are responsible for abiding by the Virginia Tech Honor Code.

The Honor Code rules apply in this class in the following ways:

1. All classwork and the Mini project (third project) is intended to be collaborative within your cohort. You may also seek help from the UTAs or instructor. This means that you are encouraged to seek assistance in learning the course concepts and tools. Providing or accepting significant parts of answers is NOT allowed as this does not reflect learning.

2. The projects (except the mini project noted above) should represent your own work. You may seek help in understanding the concepts, programming statements, or tools. However, the project work and presentation should reflect your own individual effort. Providing or accepting significant parts of answers is NOT allowed as this does not reflect learning.

3. The code (in BlockPy or Python) you submit for home works and projects should represent code that your personally wrote and understand. Providing or accepting significant code elements is NOT allowed as this does not reflect learning.

A student who has doubts about how the Honor Code applies to any assignment is responsible for obtaining specific guidance from the course instructor before submitting the assignment for evaluation. Ignorance of the rules does not exclude any member of the University community from the requirements and expectations of the Honor Code.

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