ECS 145, Winter 2018
Course Structure and Requirements
I TEACH DIFFERENTLY FROM OTHERS:
- Quizzes EVERY week. Open book.
- Heavy READING REQUIRED, tested on the QUIZZES.
- End-of-quarter term project, with WRITTEN report.
- Group work plays a central role in homework, term project.
- Quizzes are taken on your laptop computer, in class, using
the OMSI system, in which you will do actual programming and running
code.
Coverage:
We will focus on the Python and R languages, spending about 5 weeks
on each. (R will be viewed as a programming language, object-oriented
and functional programming-based, with interesting metaprogramming
features; this is NOT a course for those interested in learning about
R's statistical features.)
This is NOT a "Where do you put the semicolon?" class. (No
class should be like that, including ECS 30 and 40.) Instead, the
issues are the goals of the language, the strengths and shortcomings,
external enhancement (e.g. interfacing to C/C++), performance issues,
etc.
Necessary background:
- NO prior knowledge of Python and R is required.
- You need programming skill on the level of ECS 60. You must
be able to write programs ON YOUR OWN, WITHOUT being given an
outline. IF YOU DO NOT FEEL CONFIDENT IN WRITING CODE WITHOUT
HELP FROM OTHERS, THIS IS NOT THE COURSE FOR YOU; you would get
very low grades in the Quizzes.
You also need to know C++ and data structures from ECS 60, and the
same comment applies as above: IF FOR INSTANCE YOU DO NOT FEEL
COMFORTABLE IN WRITING RECURSION CODE, this is not the course for
you.
- You need a good intuitive grasp of math. We will use linear
algebra a lot, for instance, and though there will be a tutorial for
those lacking such background, even those with prior background in
linear algebra will struggle if they lack good math intuition.
Textbooks:
Free download from Web --
Python notes,
R notes
(latter is early, 50% draft of published book).
You are REQUIRED to have hard copies of these documents -- actual
paper, not electronic (best to go to a copying store). Please print
them BEFORE classes start. Quizzes are open-book/open-notes.
Workload:
Required textbook reading(!); weekly Quizzes
(including group Quiz on the last day of lecture); about four
programming assignments; final written project. (No midterms, no final exam.)
Programming assignments, last-day Quiz, and final project are done
in groups; group coordination process adds to the workload.
Programming Assisgnments (Homework):
- Done in GROUPS.
- Grading is done INTERACTIVELY, by group.
- TA will ask each members of the Group questions, both about
the assignment and about the course material in general.
Each group member receives a separate grade; one member may get
an A+ while another gets a D.
Lecture/Learning Format
- It is expected that the student be NON-PASSIVE in
learning.
Most of the student learning comes from reading the
textbooks in very careful, thoughtful detail.
- I used to lecture in the traditional way -- I spent time
writing on the board, the students spent time copying it to paper.
- Then I realized, "What a colossal waste!" So, now I give
you the printed notes, so you and I can spend the time
discussing the material.
- So, in lecture, we DISCUSS the books. I almost never write on
the board, nor do I have Powerpoint slides.
- It is NOT recommended that students read the books ahead of
the lecture. In the lecture,
I prepare you to do the reading.
- Goals of the lecture:
- Clarify issues brought up by students concerning reading
related to the last lecture.
- Prepare students for the next reading material, by giving
an overview of what the material will do, and going into the
more difficult examples in detail .
- You could decide to skip lecture and just read the books, but
it IS really helpful to go to lecture. There will be
spur-of-the-moment examples and insights, answers to students'
questions. etc. And you are responsible, in Quizzes and
interactive Homework grading, for everything that comes up in
lecture.