CSC151.02 2013F, Class 01: An Introduction to Algorithms ======================================================== Hi, I'm Sam. (And yes, I do expect you to call me Sam.) Our class mentors are Chike and Alex. Our class grader is anonymous. _Overview_ * Admin. * Clicker Questions. * Introduction: What is CS? * Exercise: An everyday algorithm. * Debrief _Admin_ * Don't forget that we have class on Monday! * If you haven't done so, grab a clicker and a playing card. * I will take attendance. It may take awhile. * Welcome to CSC 151. I hope you have a great time! (Particular welcomes to the first-year students.) * Warning! Your first assignment is due this Sunday at 10:30 p.m. (And yes, you have to complete the assignment even if you are not yet registered for the course.) * This course is quite overenrolled. Please put up with the extra chaos for the first few days. Please also let me know asap if you are dropping the course so that I can add poeple from the waiting list. * I don't believe in going over class policies on the first day. Please read the course web and ask me questions via irc, email, or in the next class. * Advice from our mentors. * Take advantage of office hours * Take advantage of mentors, evening tutors, and more _Clicker Questions_ * Lessons * Lots of first years (so upperclassmen have a responsibility to give good advice) * Not a gender binary in this class (or anywhere) * Lots of people with no experience, which is good Introduction: What is CS? ------------------------- Um. Learning how to manipulate your computer. Being able to understand computers and their abilities Put inputs into a computer and get outputs. What's going on behind the scenes when all of this happens. Oh yay, and coding. Solving problems in an efficent and optimal way * And discovering better methods What is science? * An absolute reason for something [no] * A way of understanding the world around us What is the scientific method? * Observe * Ask a question * Make a hypothesis * Design an experiment: Set up a procedure and parameters (so that you can repeat) * Test and gather results * Analyze the result * Start all over again Computer science is the study of algorithms * Instructions for solving problems / accomplishing goals * We write algorithms * In English * In computer languages * In hardware * We analyze algorithms * Mathematically, for efficiency * Experimentally, for efficiency * We consider the social impact of algorithms Exercise: An everyday algorithm ------------------------------- First, get with people that have the same card as you do Next, write a set of instructions for making an almond butter and jelly sandwich Five minutes for Sam to try to follow the instructions Five minutes to debrief on what we learned (if we learned anything) * Algorithm design issues * You need to be very specific with your instructions * In general, the system won't know the things that you know * You need to know what your inputs looks like * Make sure you understand every step of the process and their relationships * Reuse the things you write * Account for everything * Worry about special situations * Know what's already in the system * Other learning outcomes * Patience * Things don't work. Cope. * When things go wrong it's funny, not painful. * Working together is useful * It's easier to do things gradually Final question: Who is in this room who is NOT registered for the course?