CSC212 Syllabus 2014

From dftwiki3
Revision as of 12:59, 28 August 2014 by Thiebaut (talk | contribs) (Textbooks)
Jump to: navigation, search

--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" />


Page under construction!

UnderConstruction.jpg



Back to CSC212 Main Page



Data Structures in Java

CSC 212, Fall 2014



Course Description & Syllabus
(http://cs.smith.edu/dftwiki/index.php/CSC212_Syllabus_2014)



 



Professor


Dominique Thiébaut
Ford Hall, 356.
Telephone: 3854
Office hours TBA.


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


DrozdekDataStructuresJavaBook.jpg

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.

Requirements

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)
  • Occasional written commentary and reflection
  • An in-class midterm exam
  • A self-scheduled 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. 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.

If you find yourself spending inordinate time debugging your programs, you should consult with me very soon -- before it becomes a problem and you fall behind or it affects your work in other courses. I can help you find strategies to use your time more effectively. Don't allow yourself to fall behind early in the course; it will be many times harder to catch up later!