CSC212 Syllabus 2014
--D. Thiebaut (talk) 10:33, 18 July 2014 (EDT)
<meta name="keywords" content="computer science, assembly language, pentium, linux, programming" /> <meta name="description" content="Dominique Thiebaut's Web Page" /> <meta name="title" content="Dominique Thiebaut -- Computer Science" /> <meta name="abstract" content="Dominique Thiebaut's Computer Science Web pages" /> <meta name="author" content="thiebaut at cs.smith.edu" /> <meta name="distribution" content="Global" /> <meta name="revisit-after" content="10 days" /> <meta name="copyright" content="(c) D. Thiebaut 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,2008,2009,2010,2011,2014" /> <meta name="robots" content="FOLLOW,INDEX" />
Data Structures in Java
CSC 212, Fall 2014
(http://cs.smith.edu/dftwiki/index.php/CSC212_Syllabus_2014)
|
Professor
Dominique Thiébaut |
Go to the class Class Homepage for exercises, demo programs, and misc. information.
Course Description and Overview
CSC 212 is a required programming course in the Computer Science major sequence. It addresses more advanced programming techniques using the Java programming language, and will examine in detail a selection of useful data structures. While the projects in the course will examine the minutiae of specific programming tasks, we also aim to develop a global understanding of the art of programming. Group discussion and sharing of ideas will support this endeavor. Along the way we will also learn some additional useful tricks with the Unix operating system.
This is a programming intensive course. There are weekly lab and homework assignments and a final programming project, totaling 70% of the grade. It is imperative that you do not fall behind in the assignments because this most often proves unrecoverable and leads to dropping the course. Many resources (professor, TA hours, textbook, Web) are available to assist you in completing the coursework, and you are expected to take advantage of them. This applies regardless of how well you are performing: even excellent programmers have room for further improvement. The programming assignments cover practical aspects of the course material, and two exams (in-class midterm and take-home final) will test both theoretical and practical aspects of the concepts presented.
Topics
- Object-oriented programming in Java.
- Basic GUI (Graphical User Interface) design
- Event-driven programming
- Concepts of pointers, references and indirection.
- Theory and usage of fundamental data structures:
- Concepts of pointers, references and indirection.
- Arrays
- Linked Lists
- Stacks
- Queues
- Hash Tables
- Heaps
- Trees
- Graphs
- Searching and Sorting Algorithms
- Recursion
Textbooks
I recommend two books for this class: one covering Java, one covering data structures.
- For Data Structures
- Drozdek's Data Structures and Algorithms in Java. (2nd or 3rd Ed.). Either the book or the electronic version are fine. This book is required. It's a very expensive book, but one that will be a good reference to keep.
- For Java
- Sierran and Bates's Head Frist Java. This book is recommended, and you can substitute another Java reference for it if you prefer, as long as it supports your learning in the course. Plan to hang on to these books, so you can brush up your skills later on and teach yourself new ones.
Prerequisites
Normally students will be expected to take CSC 111 before this course. Students who have taken an equivalent programming course or who have otherwise achieved the requisite programming skills should consult the instructor.
- Expected work includes
- Weekly programming assignments (labs and homeworks)
- An in-class midterm exam
- A take-home final during the final exam period
- Final programming project with in-class presentation
This is a programming-intensive course, designed to help neophyte programmers make the transition into developing software engineers. While programming is one of the most interesting, challenging and rewarding intellectual activities out there, it is almost impossible to learn it without a lot of practice, and a lot of frustration! This takes time, especially for debugging a troublesome program that isn't quite working right yet. Often the final small details can be the hardest to fix.
Collaboration
Learning to program requires dedication and hard work. Some assignments will have to be done individually, and students are expected to complete these assignments by themselves. Some assignments will have to be done in pairs, or in groups.
Despite the above, many forms of collaboration are specifically encouraged. On any assignment students may and should discuss algorithms, approaches, and issues that arise so long as this is done without reference to specific code. Students may also discuss any programs and code not directly related to the solution of a current or pending programming assignment. In this manner, students may assist each other while ensuring that each ultimately completes the assignments for herself. During in-class labs (as opposed to the homework assignments), students are encouraged to help each other work through problems, and may review each others' programs as necessary toward that goal. Finally, some assignments may be designated for pair programming; on these each pair may work together as one but should observe the usual restrictions above with regard to other pairs.
Use and Citation of Reference Materials
Students may consult online or print references on all assignments and labs. Standard language references showing syntax, usage, class javadoc, etc. need not be cited. If you use a fragment of code (more than a single line) from some source other than the designated course textbook, you should document and credit the source in your code, preferably the header of the file containing the copied code. As noted above, you must write the bulk of your program yourself -- just as you may use short quotations in an essay, but would not copy paragraphs wholesale. When in doubt, err on the side of including a citation, and consult the professor if you think you might be in danger of leaning too heavily on a source.
Grading
Homework |
50% |
Exams: |
30% |
Final Project: |
20% |
Participation: |
± ½ a letter grade. |
Deadlines
- The final project will be due on the last day of exams.
- The take-home final exam will be due on the last day of exams, Friday, December 19.