Professor | Yuan-Fang Wang |
Office | Harold Frank Hall (HFH) 3113 |
Email address | yfwang@cs.ucsb.edu |
TAs |
Kasturi Bhattacharjee kbhattacharjee@cs.ucsb.edu Da Zhang dazhang@cs.ucsb.edu Aaron Magat ajmagat@cs.ucsb.edu Wei-Tsung Lin weitsung@cs.ucsb.edu Shiyu Ji shiyu@cs.ucsb.edu |
Readers |
Anastsiya Lazareva anastasiya@cs.ucsb.edu Xin Liu xinliu@cs.ucsb.edu Aviral Takkar aviraltakkar@cs.ucsb.edu |
Office | Trailer 936 / CSIL lab |
Office Hours | http://www.cs.ucsb.edu/~cs8/office_hours.html |
Class Web page | http://www.cs.ucsb.edu/~cs8 |
Course Description
Introduction to elements of computer science and program development for students with little to no programming experience. Algorithms, basic programming concepts, variables and expressions, data and control structures, program design, debugging and documentation.
Python 3 is the programming language for this course.
Computer Science is the study of algorithms and data structures. An algorithm is a well-defined, step-by-step sequence of instructions that can be used to mechanically determine the solution to some well-defined problem.You probably use algorithms every day. For example:In the case of using an index, this is probably an algorithm you may have learned in grade school, and it has been so long since you learned it, that now you don't even think about it, you just do it. Finding a space in a parking lot and knowing when to give up and look elsewhere is "just common sense"; this probably isn't something you were ever "taught", or even have to think very much about. You just do it.
Computers don't currently have this capability, i.e. the capability to "pick up things by common sense" and it seems unlikely that they will within our lifetime, unless there are major breakthroughs in the field of Artificial Intelligence. Such breakthroughs have been predicted for a while, but they haven't happened yet. (Maybe you'll be the one to figure out how to achieve this!)
So, for the time being at least, it falls to humans to design algorithms that computers can use to solve problems. In many cases, these algorithms are "just common sense", the computer equivalent of looking for an empty parking space in a parking lot (and knowing when to give up). Algorithms like this are easy to design. Many of the algorithms we'll see in this course are like that.
In other cases, the algorithms are very complex, or very subtle, and coming up with them is a deep intellectual challenge. Furthermore, the impact of a better algorithm on society can be very large. For example, new algorithms in the field of computational science modelling chemical and biological reactions with computer simulations can lead to breakthroughs such as new drugs to fight disease, or renewable sources of energy.
A second important topic in this course is data structures. Data structures are methods to summarize, organize and store data. It should not be hard to convince yourself that Google does not just "throw" data on hard drives haphazardly and then fumbles through all that data to find answers to your queries. An algorithm will take forever to fulfill a query if it has to perform a "needle-in-a-haystack" search through Google-size data, no matter how intelligent it is. In this course, you will learn some fundamental data structures in list, tuple, and dictionary and their associated operations.
The symbiotic relation of algorithms and data structure is best illustrated by the title of a textbook by Professor Niklaus Wirth "Algorithms + Data Structures = Programs" (Prentice-Hall). A good program must code efficient and accurate algorithms that utilize suitable organization of data to achieve its goal.
Human languages such as English and Spanish are not very well suited for expressing algorithms, at least not for expressing them to a computer (that have their problems for communicating with humans too!). So, special languages are used. In this course, we'll learn the Python programming language. We choose Python rather than Java or C++ because:
This course provides you with the opportunity to become a pretty good beginning programmer, and be well prepared for an intermediate programming course such as CS16 (the first course that counts towards the CS major at UCSB, and which requires at least one quarter of prior programming experience.)
I say that the course "provides an opportunity", because you will only become an good beginning-level programmer if you put a lot of time and effort into this course. This is true no matter how much thought and attention the instructor puts in the lectures, assignments, and exams.
The swimming/guitar/painting analogy
You cannot learn to swim, play guitar, or paint from a textbook or a lecture. You can only
The same is true of programming. Programming is not a series of facts to be memorized, and you cannot "cram" for a computer science exam. You must practice, practice, practice.
PrerequisitesNone. However CS8 is not open for credit to students who have completed CS 5, CS 10, CS 16 or Engineering 3. if you already know a programming language well (this means the equivalent of a quarter-length programming course), this is not the course for you.
Lecture: TR 3:00pm - 4:15pm, BRDA 1610 | Lab (Wednesday in PHELPS 3525): 08:00 - 08:50 (EnrlCd 08334) 09:00 - 09:50 (EnrlCd 08342) 10:00 - 10:50 (EnrlCd 08359) 11:00 - 11:50 (EnrlCd 08367) 12:00 - 12:50 (EnrlCd 57513) 13:00 - 13:50 (EnrlCd 57521) 14:00 - 14:50 (EnrlCd 57539) 15:00 - 15:50 (EnrlCd 57547) |
After the preliminaries in the lab are completed, you will be assigned a pair for what we term pair programming. You will work with this partner in all laboratory sessions as indicated. In addition, you will work with your partner on programming assignments unless you are told otherwise. Whether or not you choose to utilize pair programming in your programming assignments, every individual is responsible for completing all work. Even if you do not formally utilize pair programming, you may ask questions of your pair programming partner if you get stuck.
AssignmentsIn this course, learning by doing means all assignments are programming assignments that must be completed on computers. No "hand-waving" is allowed - either your proram does what is expected or you receive a 0 for the program.
Please note that you must turn in your programming assignments by using the "turnin" program. Emailing them or placing them in some directory in CSIL is not enough.
Late Policy
You may turn in programming
assignments 24 hours late for a 10% penalty. After one day late, they
will no longer be accepted. Make sure to check your submission within that 24 hour
window. .
Grading
Furthermore, unannounced attendance check may be
conducted at any time. If you miss more than one such attendance check without a documented medical
emergency, you will receive an F in this class.
To guard
against relying too much on your partner or other sources, if your average on
the exams is well below the class
average, you may receive an F in the class. A conventional 100 point scale will be used to map your numeric
average into a letter grade, with the lower three and upper three
points of each range representing plus/minus. /p>
This 100 point scale represents the minimum letter grade you will be assigned at the instructor's discretion, the letter grade scale may be altered in the students' favor if this will be better reflect the students' mastery of the material. Thus, if there is a "curve", it will be applied at the end, not to individual assignments.
grade >= 93 A 73 <= grade < 77 C 90 <= grade < 93 A- 70 <= grade < 73 C- 87 <= grade < 90 B+ 67 <= grade < 70 D+ 83 <= grade < 87 B 63 <= grade < 67 D 80 <= grade < 83 B- 60 <= grade < 63 D- 77 <= grade < 80 C+ grade < 60 F
Important note on exam attendance
Assignments
All assignments are posted online on the class website. Weekly programming assignments are submitted electronically by using the "turnin" program.
Labs
The labs are mandatory. Attendance will be taken. If you are more than 5 minutes late, you will receive a 10% penalty for that lab attendance.
Emails
Make sure that all e-mails to the staff have the word "CS8" included in your subject line. Please be warned that your email may not be read otherwise and you should not assume that it has been received.
Announcements
Announcements will be made on the course web page: http://www.cs.ucsb.edu/~cs8
Class discussion and Q&AAlso see the Plagiarism section below.
Plagiarism
Cooperative work is an important part of learning; you are encouraged to study together, discuss the lectures, and discuss the software solutions.
With the exception of your buddy for pair programming, DO NOT,
If you violate these rules, you will receive a grade of F and a letter will be sent to the campus Judicial Affairs Office.
This syllabus is as accurate as possible, but is subject to change at the instructor's discretion, within the bounds of UC policy.