Here is a shortcut to the course schedule/homework page.
Here is a shortcut to the summary table below of components of the grades for this course.
Class meets: M-F 12:20-1:15pm in PM 221 Office Hours: M-F 11am-12pm in GCB314D, or by appointment
Instructor:
Jonathan Poritz
Office: GCB 314D [& rarely PM 248]
E-mail:
jonathan@poritz.net
Phone: 549-2044 (office — any time); 357-MATH
(personal;please use sparingly)
Texts: Various free, open, on-line resources, including
Prerequisites: A satisfactory grade (C or higher) in Math 224 (Calculus and Analytic Geometry II) and Math 242 (Introduction to Computation). The point of the first of these prerequisites is to ensure that you have started the process of becoming comfortable with a certain level of sophistication in mathematical reasoning, perhaps including some mathematical abstraction such reading and writing proofs. The idea of the second is that you should have [at least] moderate programming skills in some language.
Postrequisites: This course is required for the minor in computational mathematics.
Course Content/Objective: The Catalog entry for this course is:
Math 345 Algorithms and Data Structures 4(3-2) An introduction to data structures, sorting, searching, recurrence relations and performance measures. Algorithms will be studied analytically and through computer implementation.The "4(3-2)" means that this course is worth four credits, has three clock hours of lecture time per week and two clock hours of lab time [here clock hour means a usual, 50-minute class period]. What this means is that we will meet five class periods a week — although we could set the schedule to be different from what was originally scheduled, if that is more convenient to students — although they will definitely not be three lectures and two labs. Instead, almost all classes will be a mixture of (a small amount of) lecturing with (a large amount of) students working on their own or in groups.
Algorithms and data structures are the core of a computer science curriculum. The material in this class is an essential component of very theoretical areas such as complexity theory, scheduling theory, distributed computing, and many others, while also being, in a very real sense, the bread-and-butter of most real-world projects in applied computer science.
Correspondingly, we shall take both a theoretical approach which deals with the limits of algorithms and precise measures of their time and space efficiency, and also a practical approach in which we make trial implementations of all of the algorithms and structures we discuss in order to play with them, to understand them better, and to see their strengths and weaknesses.
Student Learning Outcomes: On successful completion of this course, students should be able to:
Class organization: Daily procedures:
Revision of work on homework and projects: A great learning opportunity is often missed by students who get back a piece of work graded by their instructor and simply shrug their shoulders and move on. In fact, painful though it may be, looking over the mistakes on those returned papers is often the best way to figure out exactly where you tend to make mistakes. If you correct that work, taking the time to make sure you really understand completely what was missing or incorrect, you will often truly master the technique in question, and never again make any similar mistake.
In order to encourage students to go through this learning experience, I will allow students to hand in revised solutions to all homeworks and projects (both midterm and final). There will be an expectation of slightly higher quality of exposition (more clear and complete explanations, all details shown, all theorems or results that you use carefully cited, etc.), but you will be able to earn a percentage of the points you originally lost, so long as you hand in the original, graded work and a new, better version at the very next class meeting. The percentage you can earn back is given in the "revision %" column of the table in the Grades section, below.
Projects/Exams We will have two larger projects, playing the role of midterm exams, due on dates to be determined (and announced at least a week in advance). There will also be a final project with an in-class portion (demonstration/presentation to the class) in place of a final exam.
Grades: In each grading category, the lowest n scores of that type will be dropped, where n is the value in the "# dropped" column. The total remaining points will be multiplied by a normalizing factor so as to make the maximum possible be 100. Then the different categories will be combined, each weighted by the "course %" from the following table, to compute your total course points out of 100. Your letter grade will then be computed in a manner not more strict than the traditional "90-100% is an A, 80-90% a B, etc." method.
| pts each | # of such | # dropped | revision % | course % | |
|---|---|---|---|---|---|
| T&Qs: | 1 | ≈36 | 6 | 0% | 5% |
| Homework: | 5/prob | ≈40-45 probs | 5 probs | 75% | 25% |
| Midterm Projects: | >100 | 2 | 0 | 33.3% | 42% |
| Final Project: | >200 | 1 | 0 | 0% | 28% |
Contact outside class: Over the years I have been teaching, I have noticed that the students who come to see me outside class are very often the ones who do well in my classes. Now correlation is not causation, but why not put yourself in the right statistical group and drop in sometime? I am always in my office, GCB 314D [or, rarely, PM 248], during official office hours. If you want to talk to me privately and/or cannot make those times, please mention it to me in class or by e-mail, and we can find another time. Please feel free to contact me for help also by e-mail at jonathan@poritz.net, to which I will try to respond quite quickly (usually within the day, often much more quickly); be aware, however, that it is hard to have very complex, technical discussions by e-mail, so if the issue you raise in an e-mail is too hard for me to answer in that form, it may well be better if we meet before the next class, or even talk on the telephone (in which case, include in your e-mail a number where I can reach you).
Academic Dishonesty: Academic dishonesty is any form of cheating
which results in students giving or receiving unauthorized assistance
in an academic exercise or receiving credit for work which is not their
own. In cases of academic dishonesty, the instructor will inform the
chair of the department prior to implementation of punitive
action. Academic dishonesty is grounds for disciplinary action by both
the instructor and the Dean of Student Services and Enrollment
Management. Any student judged to have engaged in academic dishonesty
may receive a failing grade for the work in question, a failing grade
for the course, or any other lesser penalty which the instructor finds
appropriate. To dispute an accusation of academic dishonest, the
student should first consult with the instructor. If the dispute
remains unresolved, the student may then state his or her case to the
department chair (or the dean if the department chair is the instructor
of the course).
Academic dishonesty is a behavioral issue, not an issue of academic
performance. As such, it is considered an act of misconduct and is also
subject to the University disciplinary process as defined in the
CSU-Pueblo Student Code of Conduct Policies and Procedures
Manual. Whether or not punitive action has been implemented by the
faculty, a report of the infraction should be submitted to the Dean of
Student Services and Enrollment Management who may initiate additional
disciplinary action. A student may appeal a grade through the Academic
Appeals Board. The Dean of Student Services and Enrollment Management's
decision may be appealed through the process outlined in the Student
Code of Conduct Policies and Procedures Manual.
Accommodations: Colorado State University-Pueblo abides by the Americans with Disabilities Act and Section 504 of the Rehabilitation Act of 1973, which stipulate that no student shall be denied the benefits of education "solely by reason of a handicap." If you have a documented disability that may impact your work in this class and for which you may require accommodations, please see the Disability Resource & Support Center as soon as possible to arrange accommodations. In order to receive accommodations, you must be registered with and provide documentation of your disability to the Disability Resource & Support Center, which is located in the Library and Academic Resources Center, Suite 169.
Mandatory Reporting: Colorado State University-Pueblo is
committed to maintaining respectful, safe, and nonthreatening
educational, working, and living environments. As part of this
commitment, and in order to comply with federal law, the University has
adopted a Policy on Discrimination, Protected Class Harassment, Sexual
Misconduct, Intimate Partner Violence, Stalking, & Retaliation.
You can find information regarding this policy, how to report
violations of this policy, and resources available to you, on the
Office of Institutional Equity's website
(www.csupueblo.edu/institutional-equity).
Please familiarize yourself with the reporting requirements of this
policy. Because I am a faculty member, I am a "Responsible Employee."
That means I have to report to the Director of the Office of
Institutional Equity if you tell me that your subjected to, or engaged
in, any of the following acts: discrimination, protected class
harassment, sexual misconduct, intimate partner violence, stalking,
and retaliation.
| Al-Kwarizmi | ![]() |
data | ![]() |
Structure(s) |
![]() |
![]() |