Courses/Computer Science/CPSC 203/CPSC 203 Template/Lecture Template/Lecture 1

Required Reading
Required Text: Fluency with Information Technology: Skills, Concepts, and Capabilities. Lawrence Snyder (Addison Wesley; 3 edition (Oct 22 2007)) ISBN-10: 0321512391 ISBN-13: 978-0321512390

Introduction
Welcome to CPSC 203. In this first class we have 3 objectives:
 * Fill Out an 'ice-breaker' "Who Are We" survey on your technology knowledge and interests (25 minutes)
 * This survey will be used to introduce principles of data organization, data analysis, and data presentation. It also provides the raw data for the spreadsheet and database Take Home Assignments


 * Read the Class Syllabus Together (25 minutes)
 * Review the Skills and Concepts list for this course (what you will be learning).
 * Set a few simple "class rules" to promote a positive learning experience in a large lecture-room setting.


 * Begin an exploratory discussion of "Problem Solving" by aksing (the class) what features seem central to defining and solving various problems. (25 minutes)

Note:
 * These lectures are online at: http://wiki.ucalgary.ca   -- enter cpsc203 in the search box and navigate to the appropriate section.
 * At the bottom of each lecture is a "Questions" link, where you can list any questions you had from the lecture. I will usually review this prior to the next lecture, and if necessary, go over any items that students have questions on.
 * Use the 'discussion' tab at the top of the wiki to:
 * extend the lecture material
 * add links and readings
 * and of course, to simply discuss.

A tutorial on how to use this Wiki is here: http://wiki.ucalgary.ca/page/Courses/Computer_Science/CPSC_203/CPSC_203_Template/Wiki_Tutorial Your TA will briefly introduce you to the Wiki in your first lab, but it is your responsibility to learn how to use the Wiki by running through the Tutorial. Your term projects will be presented in this wiki.

Other Resources: Check the course wiki for supplementary readings, examples, at-home exercises, and links to other web resources at ENTER WIKI ADDRESS

Welcome to CPSC 203 – Introduction to Computing and Problem Solving (Syllabus Excerpt)
Cross Reference: see Skills and Concepts lists at: http://wiki.ucalgary.ca/page/Courses/Computer_Science/CPSC_203/CPSC_203_Template/Skills_and_Concepts#Lecture_Concepts_List

CPSC 203 is an introduction to problem solving, analysis and design using spreadsheets, databases, and through the development of simple programs.

We focus on problem definition and solving from various perspectives: The relationship of problem solving to fundamental computer science concepts will be emphasized. Computer Science offers other fields a systematic approach to solving problems. This is why computers have become so prevalent in various fields of business, arts, science, and humanities. Problem will be based on examples from a diversity of fields. Throughout the course Internet technology will be emphasized and used to complete various exercises.
 * data organization and analysis
 * via spreadsheets
 * via databases
 * via simple programs
 * through the development of simple graphical models and appropriate spreadsheet, database and program designs.

No specialized background knowledge is required for this course, but students will be expected to become familiar with the concepts. Students will use personal computers to complete assignments in spreadsheet analysis, database management and developing simple custom programs.

So what can you expect to learn in this course? Course goals are broken down into skills developed through hands-on practice and concepts that allow you to judiciously use your skills.

Course Skills
Skills: First of all, you will learn some “hard skills” that will serve you well through your university career and in your profession of choice. Computers and networks are a means to an end. That end is to extend our natural creativity and intelligence to solve problems. In particular, computers and their networks are leveraged to Organize, Analyze and Communicate Information.

Specifically, you will learn to:
 * Organize information into databases, be introduced to modern database technology, and database design principles.
 * Analyze information via spreadsheets, and be introduced to design principles for both summarizing, modeling and visualizing information in spreadsheets.
 * Communicate information in a range of media: word processors, presentation software, web technology.

These skills will be developed in the Lab/Tutorial sessions via
 * Online lessons (on this wiki) focussed on basic skils in using spreadsheet, database, and simple programming to solve problems.
 * Time Boxed Assignments that test out the skills learned in the context of realistic tasks.
 * Mini-tutorials focused on design  and problem-solving guidelines  for organizing, analyzing and communicating information.

These specific skills should give you confidence to use computers and the Internet as a medium for solving problems whether in the context of coursework, later in your professional career, or for the pure joy of it.

Course Concepts
The lectures focus on the capability of computers, and networks of computers to facilitate the organization, analysis, and communication of information. In addition to providing the background theory to support development of the skills above, you will have “understanding”, specifically you will understand:


 * Information – Organization, Analysis and Communication. How information is organized via spreadsheets, databases, search engines. Basics of data analysis using both spreadsheets and databases. How to effectively communicate information through charts and presentations.
 * What is unique about computers (their architecture) and programming (“applied problem solving”)  that allows computers to be such an all-purpose tool where you can use the same computer to write a book, maintain a photo library, or buy books online.
 * Origins of the Internet. How the rich multimedia web experience we take for granted came into being over 3 decades, and is grounded in a small set of protocols and core architecture that allows information to be shared over networks.
 * The Internet today (and tomorrow). The evolving face of the Internet as a distributed learning and collaboration medium: How search technology works, why applications are increasingly being moved to web based technologies, the rise of web-based collaboration technologies such as Wikis, web services, peer-to-peer networks, etc. (don't worry if you don't know what Wiki's, web-services, or peer-to-peer means right now – by the end of this course you will).
 * The downside of technology. Spam. Viruses. Worms. How we attempt to secure computers and networks.

The lectures provide an introduction to problem solving, beginning 'gently' and building up to more sophisticated methods for problem solving. The initial series of lectures (lectures 2-4) introduces a basic vocabulary by which key features of a real-world problem can be abstracted by building a simple graphical model, that captures the essence of the problem. We then turn to a detailed examination of problem solving techniques in the context of Spreadsheets (lectures 5-9) and Databases (lectures 10-15), with an emphasis on problems that require us to analyze patterns, and organize information in small data sets (from various disciplines). The final series of lectures (16-21) introduces some basic concepts in logic and circuits, critical to the design of computers, and then focusses on how computer scientists solve problems via developing appropriate algorithms (mechanical procedures for solving a problem). In the context of Problem Solving students will have a basic understanding of the capabilities and limitations of spreadsheets and databases, as well as an understanding of the basic concepts that make modern computer systems possible. This lectures provide a set of core concepts students can apply to solving problems in their chosen field(s)

Lecture Concepts List
Below is a list of the key concepts covered during lectures.
 * 1) Structure of the Internet
 * 2) Use of Graphs to Model Situations and Problems (A Pictorial Intro to Graph Theory)
 * 3) Spreadsheets as a medium for analyzing and communicating data on a problem
 * 4) Analysis and Visual Display of Information
 * 5) Set Theory Required for Databases (including Venn diagrams)
 * 6) Databases as a medium for organizing and analyzing information on a problem.
 * 7) Database Query patterns, Entity-Relation Diagrams, and Database Design considerations.
 * 8) Introduction to Boolean Logic and Circuits (how computers work under the hood)
 * 9) Historical Introduction to Turing Machines and the concept of an Algorithm
 * 10) Historical Introduction to Von Neumann Machines and the organization of modern computers
 * 11) Examples of Problem Solving (e.g. "Security as Problem Solving", "Web Search as Problems Solving").
 * 12) "Top Down Design" in Problem Solving (and some other design alternatives).

Course Grading
Course Breakdown:


 * Assignments and Online Quizzes 	50 %
 * Take Home Assignments               25 %
 * Time Boxed Assignments              25 %
 * Midterm Exam       			20 %
 * Final Exam  				30 %

Take Home Assignment Breakdown:
 * Assignment 1 -- Spreadsheets         8 %
 * Assignment 2 -- Databases            8 %
 * Term Project -- Technology Issues    9 %

Time Boxed Assignment TBA) Breakdown:
 * TBA 1 -- Spreadsheet                 6.25 %
 * TBA 2 -- Database                    6.25 %
 * TBA 3 -- Problem Solving             6.25 %
 * TBA 4 -- Design                      6.25 %

Each of the above components will be given a letter grade using the official University grading system. The final grade will be calculated using the grade point equivalents weighted by the percentages given above and then reconverted to a final letter grade using the official University grade point equivalents.

Assignments and Quizzes
There will be Time Boxsed Assignments in the labs/tutorials approximately every 3 weeks. So – be prepared to stay on top of the material.

We will have three Take Home assignments. The first assignment will use spreadsheets. The second assignment will build on the first, but introduce database technology. There will be a group term project focused on collaborative web media. Please note that assignments must be individually completed!

There will be one in-class midterm. There will be a Registrar scheduled final exam.

Class Rules
CPSC 203 tends to have extremely large classes with high ambient noise levels. Therefore it is important everyone follow the "Golden Rule", and provide for each other a good learning environment where the focus on learning and working together is not distracted by side-discussions or other disturbances.

Golden Rule: "Treat Others As You Would Like To Be Treated" 
 * see: http://en.wikipedia.org/wiki/Ethic_of_reciprocity

Final Word
Good Luck! It is my sincere hope that this class will both excite you about the capabilities of computers and networks, and stretch you to go beyond your current skill levels and understanding.

Glossary
There is no Glossary for this initial class

Preliminary Definitions
We will begin our exploration of problem solving by introducing two ideas : Algorithms and Heuristics. Problem Solving has many entry points, and how humans solve problems might be considered broadly a topic in Psychology. Computer Scientists think about problem solving much more narrowly. For example, consider the following two definitions (from "The Pattern on the Stone -- The Simple Ideas That Make Computers Work" by W. Daniel Hillis):


 * Algorithm: "A fail safe procedure, guaranteed to achieve a specific goal".
 * Heuristic: "A rule that tends to give the right answer, but is not guaranteed to".

Consider the following examples
 * Algorithm: Recipe to Bake a Cake. The ingredients are "inputs", the finished cake is the "output" and the intermediate steps of the recipe, are the algorithm.
 * Heuristic: "Feed A Fever, Starve A Cold". This is a general homily that does seem to work a fair amount of the time. When it does not, you should call your Dr!.

As a capsule initial definition, we might consider:
 * Algorithm: A Mechanical Procedure. Often formalizable. Inputs, Actions, and Outputs are clearly specified.
 * Heuristic: A Rule of Thumb. Usually informal. Inputs and Outputs may not be clearly specified.



Some Examples of Problem Solving to Discuss
Consider the folllowing examples of Problem Solving from various fields:


 * 1) Chimps vs Dogs solving the problem of how to recognize which of several sealed boxes contains food (see http://whyfiles.org/siegfried/story03/).
 * 2) How do I get to class on time?
 * 3) Charlie Brown's classic dillemma on how to ask the little red haired girl out on a date (see http://en.wikipedia.org/wiki/Little_Red-Haired_Girl)
 * 4) The "E-harmeny" problem. Given a list of men and a list of women with different partner preferences, can you match them up in such a way, that no couple will wish to switch? (in C.S. this is called "The Stable Marriage" problem -- from "Algorithm Design" by J. Kleinberg and Eva Tardos).
 * 5) The intriguing sociological problem of "Why  Do Drug Dealers Still Live with their Moms?" (from "Freakonomics: A Rogue Economist Explores the Hidden Side of Everything", by Steven D. Levitt and S.J. Dubner)

For each problem:
 * Which ones would you use a heuristic for.
 * Which ones would you use an algorithm for.
 * (Note -- as per the diagrma above, heuristics and algorithms are not mutually exclusive).
 * Which problems have defined inputs and outputs?
 * Which problems could you guarantee a solution for?

Summary
Heuristics and Algorithms are two complementary approaches to problem solving that we have provided some initial definitions for, and begun to explore together.

Questions

 * /Lecture 1 Questions