ECS 40 Syllabus
ECS 40 Software Development and Object-Oriented Programming Syllabus Winter 2016
Name Title E-mail Office Office Hours
Sean Davis Lecturer ssdavis@ucdavis.edu 3052 Kemper MW1-5; and by appointment.
Kavaler, David
TA
dmkavaler@ucdavis.edu
53 Kemper T 10:00am – 11:50, W 9:10-
midnight.
Buckley, Christopher TA cmbuckley@ucdavis.edu 53 Kemper T 1-4, W 4-7
Wang, Yingying TA yiwang@ucdavis.edu 53 Kemper MT 6:10 – midnight.
Wang, (Vicky) Xuening TA wxuening@ucdavis.edu None None
Web page: http://csiflabs.cs.ucdavis.edu/~ssdavis/40/homepage.html
Newsgroup: https://piazza.com/ucdavis/winter2016/ecs40/home
E-mail to Sean should only be regarding personal matters, and must come from an ucdavis.edu e-mail account. All course
questions should be posted piazza.
Course Materials:
Shotts, William E., Jr., The Linux Command Line: a Complete Introduction, San Francisco: No Starch Press, 2012.
ISBN-13: 978-1-59327-389-7
Lippman, Stanley B.; Lajoie, Josee; Moo, Barbara E., C++ Primer, 5th ed., San Francisco: Addison Wesley, 2013.
ISBN-13: 978-0-321-71411-4
Prerequisite: Course ECS 30 with a grade of C- or better.
Course objectives:
1. 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.
2. Understand the UNIX OS including its processes, file system, system files, and shells.
3. Understand pointers, recursion, file manipulation, and simple data structures such as stacks, queues, and lists.
4. Learn object-oriented design and implementation of C++, including polymorphism, operator overloading,
encapsulation, and inheritance.
Approximate Course Grading:
Homework and tutorials 5%
Programs 35%
Two midterms 27.5% (12.5% & 15%)
Final 32.5%
Class effort/participation 5% (extra credit)
Letter grades will be approximately: A = 90+%; B = 80-89%; C = 70-79%; D = 60-69%; F = <60% Work Input/Output: Written Homework: Each student must do his or her own work. Written homework must be submitted at the beginning of class on the date due. Programs: Students should work together in groups of two people. The names and e-mail addresses of all group members must appear in a file named authors.csv. 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 should submit all of its programs to the handin directory of exactly one of its members. Programs that do not compile will receive no credit. Certain assignments may be submitted to the MOSS program at UC Berkeley for plagiarism analysis. Students that hand in suspicious programs may be reported to Student Judicial Affairs. Students may edit their programs in Sean’s office, and then have them re-tested for format and operation, but not design and style. Such program edits may only be done within three lectures of the date that program grades are e-mailed. During busy times, a student will only be allowed five minutes to edit their program. mailto:dmkavaler@ucdavis.edu mailto:cmbuckley@ucdavis.edu mailto:yiwang@ucdavis.edu mailto:wxuening@ucdavis.edu All work: Late work will NOT be accepted without an e-mail excuse from the Health Center. All work will be returned in lecture. All work not picked up in class will be available in my office during office hours. Requests for re-grades must be submitted within three lectures of the return of the work in class. Exams: Exams are cumulative, closed book, and closed notes. The final will Friday, March 18th, 8-10am in 1001 Giedt. Discussion Sections: M 8:00 -8:50a in 166 Chem (David), W 9:00a-9:50a in 230 Wellman (David), W 3:10p-4:00p in 115 Hutchison (Chris) , F 10:00 – 10:50a in 212 Wellman (Chris), and F 1:10p-2:00p in 147 Olson (Chris). You are free to attend any of them, space permitting. TENTATIVE CLASS OUTLINE Dates Topic Reading 1/4 Intro, syllabus, UNIX intro, UNIX commands and utilities Shotts: Ch. 1-4, 9 (chmod), 20 (cat, sort, diff). 1/6 UNIX utilities grep, find, tar Shotts: Ch. 17-19. 1/8 UNIX shells, environment, quoting, redirection, Shotts: Ch 6, 7, 11. 1/11 The Bash Shell, and Bash shell scripts Shotts: Ch 24-29. 1/13 Shell scripts cont’d, sed, awk Shotts: Ch. 20 (sed) http://www.grymoire.com/Unix/Awk.html 1/15 Processes, make Shotts: Ch 10, 23. 1/20 C++ vs C Lippman: Ch 1-6, 12.1.2, except 1.5, 2.6, 3.2-3.4, 5.6 1/22 C++ vs C cont'd None. 1/25 Classes and data abstraction Lippman: Ch 1.5, 7, 13.1-13.4 1/27 Classes and data abstraction cont'd None. 1/29 Midterm #1 UNIX None 2/1 C++ Stream input/output (last day to drop) Lippman: Ch 8.1, 17.5.1, 17.5.2 2/3 File processing Lippman: Ch 8.2, 17.5.3 2/5 Operator overloading Lippman: Ch 14. 2/8 Operator overloading cont'd and linked lists Linked list handout. 2/10 Linked lists cont'd. None. 2/12 Inheritance Lippman: Ch 15.1-15.7. 2/17 Virtual functions, and polymorphism None. 2/19 Templates Lippman: Ch 16.1 – 16.3. 2/22 Strings, string streams Lippman: Ch 3.2, 8.3 2/24 Standard Template Library (STL) intro, vector, iterators Lippman: Ch 3.3, 3.4, 9. 2/26 STL associative containers Lippman: Ch 11. 2/29 STL generic algorithms Lippman: Ch 10. 3/2 Review and catch-up None. 3/4 Midterm #2, UNIX, C++ through 2/27 None. 3/7 Exception handling and the preprocessor Lippman: Ch 2.6.3, 5.6, 18.1. 3/9 Stack and queue data structures, bitwise operators Lippman: Ch 4.8, 9.6. 3/11 Recursion None. 3/14 TBA None. http://www.grymoire.com/Unix/Awk.html