ECS 40A, Fall 2007

Introduction to Software Development

  • 12/13/2007: Final grades have been posted; please check in MyUCDavis for details. I wish everyone a wonderful break!

    I'm available at 2-3pm today (12/13/07) if you'd like to look at your final exam papers. Otherwise, you may look at them next year.

  • 12/03/2007: Additional OHs during the finals week:
        12/10/07: Jeffrey (10-1); Tufan (2-5)
        12/11/07: Zhendong (10:30-11:30, 1:30-2:30)
  • 12/03/2007: Reminder: final exam on 12/11/07 in 202 Wellman
  • 12/03/2007: My OH on Friday is moved to 3-4 tomorrow (12/04).
  • 11/30/2007: programming assignment #7, due: 12/07/2007 at 11:59pm
  • 11/21/2007: No class on Friday; have a wonderful Thanksgiving!
  • 11/20/2007: Reminder: midterm tomorrow in class.
  • 11/19/2007: programming assignment #6, due: 11/30/2007 at 11:59pm
  • 11/09/2007: programming assignment #5, due: 11/19/2007 at 11:59pm
  • 11/09/2007: ddd tutorial (do not need to turn in anything for this part)
  • 11/02/2007: programming assignment #4, due: 11/09/2007 at 11:59pm
  • 10/31/2007: Graded HW can be picked up outside my office (3011 Kempr).
  • 10/31/2007: No OH this Friday; please email if you needed to speak to me.
  • 10/24/2007: programming assignment #3, due: 11/02/2007 at 11:59pm
  • 10/24/2007: PA2 due date extended to 10/26/2007 at 11:59pm
  • 10/20/2007: Reminder: PA2 due 10/24/2007 at 11:59pm
  • 10/20/2007: Reminder: last day to drop is 10/24/2007.
  • 10/18/2007: Reminder: midterm tomorrow in class.
  • 10/18/2007: Code used in lecture, written HW solution on MyUCDavis.
  • 10/09/2007: programming assignment #2, due: 10/24/2007 at 11:59pm
  • 10/05/2007: programming assignment #1, due: 10/17/2007 at 11:59pm
  • 10/03/2007: written assignment on Unix, due: 10/15/07
  • 10/03/2007: tentative assignment due dates
  • 10/01/2007: lectures notes on Unix
  • 09/28/2007: gdb tutorial assigment, due: 10/05/07 at 11:59pm
  • 09/25/2007: welcome to ECS 40A!

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

Date Topic Reading
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.

Valid HTML 4.01!