Syllabus

Location and Time - Halsell 228, 9:55-11:10pm

Professor - Dr. Mark Lewis, Office: HAS 201K, Phone: 999-7022, e-mail: mlewis@trinity.edu. The best way to reach me typically is by e-mail. I check it frequently and try to respond promptly.

Office Hours - These are listed on my T-mail calendar. I'm in my office a lot so you should feel free to drop by. If you are coming from lower campus you can always call or write a short e-mail to see if I'm in and available at that time. I can also do virtual office hours via Google+ hangouts.

Texts - "Introduction to Algorithms" by CLRS

Course Description - This is an advanced course on algorithms and data structures. In many ways it is a continuation of the Data Abstraction class. The objective of the course is for you to understand advanced algorithms and the data structures that are needed to make them work. You should also gain the ability to design your own algorithms to efficiently solve challenging problems.

As my previous students can attest, the courses that I teach are aggressive. I have one overriding objective in my courses and that is to make you think. If I make you think new thoughts for most of the semester I will have done well. If I give you new ways to think thoughts (old and new), then I will truly have succeeded. This course is not about busy work, though inevitably a fair bit of work will be required. Exactly how much work you have to put in will often be inversely proportional to how much you think about the work that you should be doing. Writing programs on the scale of most of the assignments for this course requires a significant amount of design and thought to make sure that what you are trying to do will actually accomplish what you want it to and that it will do it correctly. Failure to think nearly always leads to more work for you in the end.

Honor Code - All work that you submit for this class needs to be pledged. In the case of code, this means that you need to pledge in a comment at the top of each file.

Coding Practices - You are expected to follow certain coding practices for any code that you turn in as work in this course. In this sense I'm fairly lenient. I only require uniform indentation and reasonable documentation, especially in the form of self-documenting code. I will not help you to debug any code that is not well indented. I don't care exactly how you decide to align brackets or put in white space (though some white space is helpful), but you have to be uniform, and all blocks of code should be indented beyond what the surrounding code had been. If you use poor function and variable names and I can't figure out what you are trying to do, it will impact your grade negatively. All submitted code needs to compile and run under Linux as that is where I will be testing them.

Grades - The grading system for this class is a bit different from my other courses. Every week I lecture on a topic on Thursday and assign you to teams of three to work on three different problems. On the following Tuesday you will present solutions to the problems. These solutions will be reviewed during class and other teams can challenge any given submission. I will also run the submissions through a set of tests for speed and correctness. Fastest solutions and most elegant solutions receive "medals". In addition to the problems there will be a midterm and a final exam testing theoretical understanding of algorithms and order analysis. Lastly, I plan to come up with "individual challenge" problems that students can get on Tuesday and return on Thursday. These will only be available later in the semester. The following table summarizes maximum point values for each thing you can do.

Note that solving one problem each week gives you a lot of points. Solving two or three gives fewer points, but you will have to do that occasionally to get a high grade in the class. If your team gives a solution, but it fails for some inputs, you will not get full credit. Code that doesn't compile gets zero points.

The following table gives the point totals required for different letter grades in the course.