ECS 145, Winter 2017
Course Structure and Requirements
I TEACH DIFFERENTLY FROM OTHERS:
- Quizzes EVERY week. Open book. They form 70% of the course grade.
- Heavy READING. Reading is tested by the QUIZZES.
- Term project, with WRITTEN report.
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 -- rather than focusing on its
This is NOT a "Where do you put the semicolon?" class. (No class
should be like that.) Instead, the issues are the goals of the language, the
strengths and shortcomings, external enhancement (e.g. interfacing to
C/C++), performance issues, etc.
- 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 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.
Free download from Web --
(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). Quizzes are
open-book/open-notes. Do not print these documents until told to do
so, as I may revise them.
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.
- It is expected that the student be NON-PASSIVE in
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