|
|
| Time |
MWF 3:10-4:00pm |
| Location |
202 Wellman |
| Instructor |
Zhendong Su,
3011 Kemper Hall,
OH: MF 4-5pm
|
| TA |
Tufan Demir (demirt AT cs DOT ucdavis DOT edu)
53 Kemper Hall, OH: W 1-3, Th 1-3
Jeffrey Yuen (jefyuen AT ucdavis DOT edu)
53 Kemper Hall, OH: Tu 10-12
|
| Sec 1 |
W 9:00-9:50am,
146 Olson
|
| Sec 2 |
W 8:00-8:50am,
148 Phy/Geo
|
Objectives
ECS 40A teaches students the elements of program design, style,
documentation, efficiency; debugging methods; operating system tools;
object-oriented programming in C++; and basic data structures and their
use. Here are the specific objectives of the course:
- Become more familiar with software development tools such as gdb
and make to further refine the programming techniques of stepwise
refinement, documentation, multi-file program design, and
time/storage tradeoffs.
- Understand the UNIX OS including its processes, file system,
system files, and shells.
- Understand pointers, recursion, file manipulation, and
simple data structures such as stacks, queues, and lists.
- Learn object-oriented design and implementation of C++,
including polymorphism, operator overloading, encapsulation, and
inheritance.
Prerequisite
Course ECS 30 with a grade of C- or better. The prerequisite will be strictly enforced.
Textbooks
Das, Sumitabha, Your Unix: The Ultimate Guide, 2nd ed.,
McGraw-Hill, 2006.
Savitch, Walter, Absolute C++, 3rd ed., Addison Wesley, 2007.
Both are required text for the course.
Home Page and Newsgroup
Web page: http://www.cs.ucdavis.edu/~su/teaching/ecs40a-f07/index.html
Newsgroups: ucd.class.ecs40 (staff post only),
ucd.class.ecs40.d (student/staff post)
E-mail to the instructor should only be regarding personal matters,
and must come from an ucdavis.edu e-mail account. All course
questions should be posted to the ucd.class.ecs40.d newsgroup.
Grading
Subject to change, especially at the start of the quarter.
Your final course grade will be made up of the following components:
- Homework and tutorials (10%): Each student must do his or her own work.
Written homework must be submitted at the beginning of class on the
date due.
- Programs (30%): Students should work together in groups of two
people. The names of all group members must appear on the first line
of each file, (second line for shell scripts). All students may help
each other with debugging, but each group must write their own code.
Programs will be submitted using the handin facility of UNIX to the
cs40a account by midnight on the date due. Each group will submit all
of its programs to the handin directory of exactly one of its members.
- Two midterms (15% + 15% = 30%): See tentative dates for the
midterms on the course schedule.
- Final (30%): The exams, including midterms and final, are
cumulative, closed book, and closed notes. The final will be on Tuesday,
December 11th, 3:30-5:30pm in 202 Wellman.
Letter grade cut-offs will be approximately:
A (>= 90%); B (80-89%); C (70-79%); D (60-69%); F (< 60%)
It is expected that all students understand University policies
on academic honesty. Cheating on assignments or exams is very serious
and will not be tolerated.
We will use Moss to check
the programming assignments for plagiarism. Any suspected cases
will be reported
to Student Judicial Affairs.
Late and Regrade Policies
Late work will NOT be accepted without a doctor's excuse. All work
will be returned in lecture. All work not picked up in class will be
available in my office during office hours. Regrades must be
submitted within one week of the return of the work in class.
Tentative Class Schedule
| 09/28 (F) |
Intro, syllabus, IDE, UNIX intro, UNIX commands and utilities |
Das Ch 1, 3, 10.6, 10.7, 10.10 |
| 10/01 (M) |
UNIX utilities grep, find, tar |
Das Ch 4.11, 11.1-11.5, 19.13 |
| 10/03 (W) |
UNIX shells |
Das Ch 7, Ch 9.1-9.9 |
| 10/05 (F) |
The Bash Shell, and Bash shell scripts |
Das Ch 13.1 - 13.15, Appendix B |
| 10/08 (M) |
Shell scripts cont'd, awk, sed |
Das Ch 11.6-11.12, Ch 12 |
| 10/10 (W) |
Processes, make |
Das Ch 8.1 - 8.11, Ch 16.1, 16.2 |
| 10/12 (F) |
C++ vs C |
Savitch Ch 1-5 |
| 10/15 (M) |
Structures and classes |
Savitch Ch 6 |
| 10/17 (W) |
Classes, and constructors |
Savitch Ch 6, 7.1, 7.2 |
| 10/19 (F) |
Midterm #1 (on UNIX) |
|
| 10/22 (M) |
Dynmamic memory allocation, references, constructors, destructors, and file input/output |
Savitch Ch 10, 12.1 |
| 10/24 (W) |
Operator overloading (last day to drop) |
Savitch Ch 8 |
| 10/26 (F) |
Operator overloading cont'd |
Savitch Ch 8 |
| 10/29 (M) |
Linked Lists |
Savitch Ch 17.1 |
| 10/31 (W) |
Linked Lists cont'd |
Savitch Ch 17.1 |
| 11/02 (F) |
Strings |
Savitch Ch 9 |
| 11/05 (M) |
I/O format, random file access, and inheritance |
Savitch Ch 12.2 - 12.4, 14.1 |
| 11/07 (W) |
Inheritance |
Savitch Ch 14 |
| 11/09 (F) |
Polymorphism, and virtual functions |
Savitch Ch 15 |
| 11/12 (M) |
No class, Veteran's Day |
|
| 11/14 (W) |
Templates |
Savitch Ch 16 |
| 11/16 (F) |
Standard Template Library, and iterators |
Savitch Ch 7.3, 17.3, 19 |
| 11/19 (M) |
Standard Template Library cont'd |
Savitch Ch 19 |
| 11/21 (W) |
Midterm #2 (on UNIX and Savitch Ch 1-10, 12, 14-16, 17.1) |
|
| 11/23 (F) |
No class, Thanksgiving Holiday |
|
| 11/26 (M) |
Standard Template Library cont'd |
Savitch Ch 19 |
| 11/28 (W) |
Exception Handling and the Preprocessor |
Savitch Ch 11, 18 |
| 11/30 (F) |
Recursion |
Savitch Ch 13 |
| 12/03 (M) |
Stack Data Structure & Queue Data Structure |
Savitch Ch 17.2 |
| 12/05 (W) |
Patterns and UML |
Savitch Ch 20 |
| 12/07 (F) |
History of computers |
|
gdb Tutorial (10 points), due October 5, 2007 by 11:59pm
Files to handin to cs40a p1 directory: main.c, prime.c, and typescript.
Each person must complete the gdb
debugging tutorial available on the ECS 40 home page. You must
use the script utility to record your work. You will need two
windows open to complete the tutorial--one for vim and one for gdb.
In the window in which you will use gdb type script. The script
utility copies everything that appears on the screen into a file
named typescript. Immediately type echo and your name so that the
resulting file will begin with your name. Do not worry if you make
mistakes during the tutorial. We just want to see that you worked
through the tutorial. Once you are finished with the tutorial, type
exit in the window for gdb. The script utility will then post a
message saying that the file typescript was created.
Credits: Much of the course is based on material from previous
offerings by Sean Davis.
|