|Monday||2:30 pm - 4:00 pm|
|Tuesday||4:30 pm - 5:30 pm|
|Wednesday||10:00 am - 11:00 am and||2:30 pm - 5:00 pm|
|Thursday||10:00 am - 11:00 am and||4:30 pm - 5:30 pm|
|Friday||9:00 am - 10:00 am and||4:30 pm - 5:30 pm|
For more details about my schedule, please refer to
Students should always use the YouCanBook.me calendar reservation site to schedule an appointment to meet with the Instructor.
Students may contact me by email if they want to schedule a special appointment outside of office hours.
|Office Number||+1 814-332-2880|
Lecture and Discussion: Monday, Wednesday, Friday 11:00 am - 11:50 am
Laboratory Session: Tuesday 2:30 pm - 4:20 pm
Final Examination: Tuesday, May 7, 2013 at 9:00 am
The essence of the discipline of computer science is algorithms. Software developers can also create a computer program to serve as a concrete representation of an algorithm. In particular, this course will expose students to the notion of an object-oriented data structure. Students will delve into the issues that are related to algorithm design, implementation, and analysis. Specifically, the course will introduce the student to abstract data types such as
Hashtables. Next, the course will expose the student to fundamental concepts such as recursion, searching, and sorting.
Furthermore, this course will provide a student's initial introduction to the analysis of algorithms. We will explore the analysis of algorithms on two fronts. First, students will consider the analytical (i.e., asymptotic) evaluation of algorithms. Second, you will conduct an empirical analysis of an algorithm with a variety of workloads and experimentation environments. Since the majority of the software implementation tasks will use the Java programming language, this course will frequently require students to use the object-oriented programming paradigm and design patterns. Whenever possible, the course will highlight the connection between algorithms, data structures, and other disciplines in the social and natural sciences.
At the completion of this semester, the student should be comfortable with the object-oriented programming paradigm. Also, students should be able to handle many of the important, yet accidental, aspects of implementing programs in the Java programming language. That is, students should be comfortable with one or two program editors and compilers and be able to understand the purpose of shell environment variables such as the
CLASSPATH. Students should have a toolkit of abstract data types that they can use in the context of the solutions to larger problems. Students must have a strong grasp of the basic building blocks of a programming language and a growing knowledge of more advanced topics like loop invariants, formal specifications, and recursion. Finally, students should have a basic knowledge of analytical and empirical techniques that they can use to measure algorithm performance.
The primary text for this course is Data Structures and Algorithms in Java, Fifth Edition. This text was written by Michael T. Goodrich and Roberto Tamassia. This text provides a balanced, high quality treatment of the topics that were listed in the Course Objectives Section.
The required articles could be supplemented with excerpts from a number of different sources. Additional articles from important computer science and software engineering magazines and journals, such as Communications of the ACM, IEEE Software, IEEE Computer, and IEEE Transactions on Software Engineering, could be examined to further expand and deepen the scope of the required material. Technical papers available in the CiteSeer Repository or the ACM Digital Library could also be used as additional texts. The Instructor may also select chapters from additional texts, such as the free and online Java Structures text book. Finally, the class will regularly examine popular press articles that discuss the broader issues associated with the discipline of computer science.
The grade that a student receives in this class will be based on class participation, instructor meetings, grades on two interim exams, the grade on the final exam, the grade for all of the laboratory and homework assignments, and the grade for the final project. The grade breakdown will follow the form below. All percentages are approximate and it is possible for the assigned percentages to change if a need to do so presents itself.
|Laboratories and Homework||30%|
All students are required to meet individually with the instructor to discuss their status in the class and work towards improving their understanding of the principles and practice of data structures and algorithms. During these meetings, which must be scheduled to take place during my office hours, students will discuss the concepts introduced during a class session, ask questions about the laboratory assignments, review for an examination, or develop ideas for the final project. By the end of the semester, each student is required to have met with the instructor for a total of, at minimum, one-hundred-and-twenty minutes. Students are also responsible for both maintaining a record of their instructor meetings and submitting this record on the day of the final examination.
All assignments will have a given due date. The printed version of the assignment is to be turned in at the beginning of the class on that due date. Late assignments will be accepted for up to one week past the assigned due date with a 10% penalty. All late assignments must be submitted at the beginning of the class that is scheduled one week after the given due date.
It is mandatory for all students to attend class. If you will not be able to attend a class session, then please see the Instructor at least one week in advance in order to describe your situation. Students who miss more than five unexcused classes will have their final grade in the course reduced by one letter grade. Students who miss more than ten unexcused classes will automatically fail the course.
In order to explore the discipline of computer science, it is essential for students to have hands-on experience in a laboratory. Therefore, it is mandatory for all students to attend laboratory sessions. If you will not be able to attend a laboratory, then please see the Instructor at least one week in advance in order to explain your situation. Students who miss more than two unexcused laboratories will have their final grade in the course reduced by one letter grade. Students who miss more than four unexcused laboratories will automatically fail the course.
Laboratory assignments will ask students to conduct experiments to learn more about the Java programming language and explore different techniques for analyzing, designing, and implementing software solutions to real-world problems. All laboratory assignments will require the use of the provided software tools to write programs that conduct experiments and solve problems. Unless specified otherwise, students must conduct laboratory assignments in an individual fashion. Each laboratory assignment will be due at the beginning of the next laboratory session unless the assignment sheet states otherwise. Students are responsible for maintaining a laboratory notebook that records their experiences during the laboratory session. Finally, homework assignments will invite students to write papers and give presentations about topics related to this course.
This class will often present you with the description of a problem and invite you to implement and evaluate a solution. The final project in this class will require you to utilize all of the knowledge that you have accumulated during the course of the semester in order to solve a problem with one or more programming languages and software development tools. The project will ask you to draw upon your problem solving skills and your knowledge of the principles and practice of object-oriented software development. Furthermore, the final project may involve a significant experiment to discover, understand, and/or evaluate one or more algorithms or software applications.
Throughout the semester, we will try many different software tools that computer scientists use throughout the software development life cycle. The Instructor and the Department's Systems Administrator have invested a considerable amount of time to ensure that our laboratories support the completion of laboratory and homework assignments and the final project. To this end, students will be required to complete all assignments and the final project while using the department's laboratory facilities. The Instructor and the Systems Administrator will only be able to devote a limited amount of time to the configuration of a student's personal computer.
The study of the computer science discipline is very challenging. Students in this class will be invited to learn the principles of algorithm analysis, examine a host of abstract data types, hone their problem solving skills, and learn about new software development environments. During the coming semester even the most diligent student will experience times of frustration when they are attempting to understand a challenging concept or complete a difficult laboratory assignment. In many situations some of the material that we examine will initially be confusing — do not despair! Press on and persevere!
In order to minimize confusion, students must invest time to prepare for class discussions and lectures. During our class periods, the Instructor will often pose demanding questions that could require group consultation, the creation of a program, or a vote on a thought-provoking issue. Only students who have prepared for class by reading the assigned material and reviewing the laboratory and reading assignments will be able to effectively participate in these discussions. More importantly, only prepared students will be able to extract the knowledge that is needed to be successful in this course. Important portions of the material that will be discussed during the semester will not be in the textbook.
In order to help students to remain organized and effectively prepare for classes, the Instructor will maintain a class schedule with reading assignments and additional Instructor notes. The reading assignments will be directly integrated into the class schedule. Throughout the class sessions students will also be required to download, use, and modify Java programs; it is also likely that students will be asked to use programs that are written in other languages. Each of these program segments will be provided on the course Web site. Students who are not comfortable with compiling, editing, and using simple Java programs should see the Instructor immediately.
Remember this motto, semper paratus!
All of your submitted source code must have your name and the date clearly printed at the top of the page. All source code that is not submitted in this fashion will be assigned a total of zero points. That is, the student will earn an "F" on this laboratory or portion of the final project. The first time that a student violates this requirement, he/she will be given a resubmit option. After this single resubmit option has been exercised, a student will be awarded an "F" for all further infractions.
The Americans with Disabilities Act (ADA) is a federal anti-discrimination statute that provides comprehensive civil rights protection for persons with disabilities. Among other things, this legislation requires all students with disabilities be guaranteed a learning environment that provides for reasonable accommodation of their disabilities. Students with disabilities who believe they may need accommodations in this class are encouraged to contact Disability Services at +1 814-332-2898. Disability Services is part of the Learning Commons and is located in Pelletier Library. Please do this as soon as possible to ensure that approved accommodations are implemented in a timely fashion.
The Academic Honor Program that governs the entire academic program at Allegheny College is described in the Allegheny College Course Catalog. The Honor Program applies to all work that is submitted for academic credit or to meet non-credit requirements for graduation at Allegheny College. This includes all work done in class (e.g., examinations, quizzes, and laboratory work), all papers, and any other material that might be assigned in this class. All students who have enrolled in the College will work under the Honor Program. Each student who has matriculated at Allegheny College has acknowledged the following pledge:
I hereby recognize and pledge to fulfill my responsibilities, as defined in the Honor Code, and to maintain the integrity of both myself and the College community as a whole.
In this course, students are encouraged to conduct high-level discussions with their fellow classmates about the laboratory assignments. The Instructor considers it a violation of the honor code for students to share segments of source code on the laboratory assignments. If students are experiencing difficulties with the low-level details of a laboratory, then they are encouraged to seek help from the Instructor. The Instructor reserves the right to use several different automated tools that scan Java source code to check for plagiarism violations. Furthermore, the Instructor reserves the right to use different automated tools to scan written responses to assignments for plagiarism violations.
Unless otherwise specified, this work is licensed under a Creative Commons License