Spring 2016
Course Description and Goals
This course introduces essential data structures and associated algorithms in an intensive programming environment. We will be learning the Java programming language, as well valuable skills such as working with IDEs and the Unix commandline. There are several course objectives beyond mastery of the course material:
Assignment Notes
There will be weekly assignments and labs, and it is strongly encouraged that students do not fall behind, since it will be difficult to catch up. Assignments for this course are designed to be challenging and push you to new levels as a computer scientist. There is always room for improvement - hold yourself to a high standard for your work for this class. There are many resources (TAs, office hours, Piazza, textbooks, online Q&A) designed to help you get the most out of the process of completing coursework. Late assignments will generally not be accepted unless there is a documented emergency. All assignments must be submitted on the Unix server Aurora. We will not be using Moodle for this class.
Textbooks
You are strongly encouraged to obtain the following textbooks, but they are not required (and one is free online). There will be suggested readings from these books. They are both on reserve in the library, or you could share with a classmate. If you are a CS major or anticipate using Java in the future, I would recommend having these books as references.
Software Links
Online Discussion
This semester we will be using Piazza for online class discussion, homework help, announcements, clarifications, etc. Piazza can help create a supportive community outside of class, as well as provide quick answers to questions outside of office hours. Posting on Piazza counts toward your participation grade, and it is required to either ask or answer a question at least once. Our class page is:
https://piazza.com/smith/spring2016/csc212/home
Tentative Topics
Teaching Assistants
There are several wonderful TAs who will be holding office hours for this class, as well as answering questions on Piazza. Their schedule can be found here:
http://cs.smith.edu/classwiki/index.php/Computer_Science_TA_hours
Collaboration and the Honor Code
Credit for this section: Nick Howe
Learning to program requires dedication and hard work. Students are expected to complete the assignments for this course by themselves, and will not benefit from relying too much on others. Therefore, each student will be expected to follow this guideline: on individual assignments, nobody should see your code on a programming assignment but yourself and the members of the course staff! By extension, you should not see anybody else's code either. With the sole exception of your partner on any pair programming assignments, sharing code or working with others to write code for homework assignments is a violation of course policy and may result in a referral to the Honor Board. Similarly, taking code found from other sources (such as the internet) and representing it as your own is dishonest and uniformly prohibited. (Use of small portions of found code is acceptable if you are scrupulous about documentation and attribution.)
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.
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 readme.txt. 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
Electronic Devices
During both lecture and lab, you are welcome to use electronic devices in a way that is directly related to the class (taking notes, working on your lab, etc). Please refrain from any other websites or non-class related activities, for the main reason that this is distracting to others sitting around you.
Additional Resources
If you have a letter from the ODS, please give it to me early in the semester so we can discuss how to best meet your accommodations.