Category

Teaching

Category

The weight of Stereotypes in CS: 

Learning Computer Science, just like about anything I would guess, is not easy. In the case of Computer Science, a lot of “folk tales” are going around: “CS is not for women”; “CS is heavy in math”; “CS is hard”; “Wow, you must be super smart if you are in CS”, and I could go on and on and on… These statements are all false and unfounded. However, hearing (or having heard) these does not help when you are a student who might be second-guessing his or her choice of major, his or her fitness to the studying this field.

The weight of Expectations in CS2: 

Over the last semesters, I have taught CS2, which is the second course in the 3-course CS introductory sequence. Coming to CS2, CS students have already taken an Introduction to Computer Science course (or equivalent). We usually expect them to have been acquainted to programming in Java (in our case; possibly other languages for other institutions), to the notion of algorithm, to solving problems, and to the details of control structures that implement conditionals, repetitions, etc. This is a heavy expectation: some students may have taken the intro course several semesters or years ago, or even just a summer ago, and have forgotten a lot of it; they may have barely passed the intro course; etc. All sorts of reason that make them not fit exactly the profile we expect. And sometimes, it is just about perceptions and fears: students may know all they should know, but undermine themselves by thinking they are not good enough. This brings us back to the power of negative statements like those that I outlined earlier.

Regardless: Whatever the reason, whatever how confident or not my students feel about their skills coming to my class, I believe that we can work this out and support all students to succeed.

So how do we achieve this?

First: my disclaimer. Let’s be clear, I do not do magic… a.k.a., nothing I am going to suggest will work for a student who cannot commit. And to be sure I am not misunderstood, I understand that students may not be able to commit. A lot of our students work outside of campus, some are essential financial support for their families, some support their parents, others their children, some both, some are homeless, and I am sure that there are other circumstances I did not list that are as trying if not worse. So, I am very thankful to have my students in class every day of class and I understand that they might not have a lot of time outside of class to do what ideally they would.

However, in order for me to help a student (all students) be successful, I need their cooperation, that is, commitment. And commitment is not all consuming either, rather reasonable.

This being said, here we go. I have a few observations / recommendations on what to focus on.

Committing to what?

Computer Science is like running. I could teach you all I want about running: how to pace your effort, how to develop your endurance, etc. If you did not run, it would be useless, and by the end of the semester, you would not be able to finish the race.

I expect the same in Computer Science. Practice is required. The beauty of CS is that you can answer most of your questions by programming them: does the java instruction System.out.println(myArray) print the content of myArray or something else? Go code it and see it for yourself. This is a great power you have! I said something in class that you are not sure about: go and code it to check it for yourself. You do not need to stay confused: you now see it for yourself. Etc. Etc.

So the commitment I am expecting of my students is simply this: PRACTICE, CHECK things for yourself (yes, of course you can do it!), and PRACTICE some more… regularly, not just before a deadline or at the end of the semester.

Unless you exercise your CS muscle, I cannot promise you can be successful. Just like a running coach would not tell you that you could win or even finish the race if you did not (or only seldom) practice.

Now that we agree on the need for regular practice, let’s see how you need to practice, what exactly you need to do.

Give yourself credit:

However unfit, unprepared, or lost you may feel as you come to my class, I need you to agree to give yourself credit. You bring to the class and to your study of CS a lot more than you think you do. Most if not all of what we study in CS2 has a direct equivalent in real life. As a person, you have a lot to bring to what we are going to do: you know how to sort playing cards, you know how to look for stuff in your house, you know how to go from point A to point B without hitting walls or people, etc. You know a lot more than that. You may be working already, be taking care of your parents, your children. You may speak another language, another culture. You have time management skills that you often underplay. Bring them to class and use them. Be confident, know that your experiences are valued and useful in my class.

This belief is broadly shared in the UTEP community. The UTEP EDGE philosophy is spreading on campus. Check out the Bienvenidos campaign!

Focus on the real problem to be solved and give yourself credit (you can do it):

There are multiple questions that need to be addressed when approaching a programming question/lab. The obvious two that are usually at the center of our students’ work are What? and How? The “ultimate How?” will lead to a Java program that addresses the problem at hand. However, it is the last step, possibly the most “terrifying” to my students, but in fact, the easiest one if the earlier steps are taken properly.

So what are these earlier steps. They are the steps that consist in answering the following questions: 1/ “What?” and 2/ “How does that work in real life?” questions.

The “What?” question:

Before to rush into writing code that solves a problem, the most important thing to do is to make sure that you know “WHAT” needs to be done. Strategies that help at this stage of solving your problem include:

  • Asking questions (to your instructor, members of your instructional team); and
  • Rephrasing the problem in your own words (and checking with your instructor, members of your instructional team that you have it right).
The “How does that work in real life?” question:

At this stage in the CS curriculum, most problems can be illustrated by a real-life activity (sorting algorithms can be tried on playing cards, linked lists can be worked out with physical props like beads on a necklace or little-people toys). I have observed that 1/ recognizing how what is asked in a lab is similar to real-life situations, and then 2/ figuring out how we would approach this problem in real life are essential steps that contribute to developing problem solving skills.

As a result, any problem posed as a programming lab assignment should first be addressed as a real-life one. We should be able to come up with a no-jargon solution / solving strategy that can then be translated into Java (or any other language).

This step requires honesty: do not lay out a strategy to solving a problem that you would not use in real life. Ask yourself if that makes sense, if you could explain it to someone (a living one, not a computer). Until you can clearly explain how to proceed, in clear human terms, you are not ready to write any code.

Tip:as soon as you find yourself speaking in “create this loop”, and then “you have a nested loop”, and “call this method”, etc., you have strayed away from the path to solution.

Please take a look at the IDEAL problem-solving framework (resource 1 and resource 2), where:

  • I means Identify
  • D means Define
  • E means Explore
  • A means take Action
  • L means Look back

Persist:

Okay, let’s fast-forward a little. You are now done with the previous step and you are ready to code your algorithm / solution. What could go wrong, right? Well, although you are ready to code, many things could still go wrong: you do not remember the name of a given Java method, you tend to leave typos in your code, you forget semi-columns, etc. This is your last challenge before success. You cannot give up!

That’s the point: persist! Do not give up! The last muscle that needs to be exercised is the “debugging muscle”. This can be daunting if you get a lot of errors, but by exercising this muscle, you will soon develop an eye for errors: you will see them and know where they are coming from, making fixing them much easier. But to get there, you need not to give up and practice.  To help here, use an IDE that you are comfortable with. It makes coding and debugging much easier.

Finally, this phase is also one in which testing will come in handy (not just because it is a part of your lab requirements, but just because it is useful to making sure your code does what it is supposed to do: important, no?). Practice your Unit Testing skills: you will soon appreciate how useful and easy they will have become to you. It is well worth the learning curve.

In a nutshell:

It all comes down to: Practice, Practice, Practice… and focus your time and efforts where they need to be: the two fundamental questions as well as debugging/testing.

 

 

VERY IMPORTANT:

Course Description: The purpose of this course is to present the student with the mathematical techniques used for analyzing the time and space performance of computer algorithms.  The focus will be on the practical application of these techniques to designing efficient algorithms.  The following topics will be covered: asymptotic notation, recurrences, lower bounds for worst case and average case, dynamic programming, searching algorithms, sorting algorithms, graph algorithms, and if time allows, parallel algorithms, string matching algorithms.

Textbooks:

It is very important that ALL students have their books from Day 1.

  • “Introduction to Algorithms”, by Cormen, Leiserson, Rivest, and Stein, Third Edition, McGraw Hill
  • “Algorithms in a nutshell”, by Heineman, Police, and Selkow, by O’Reilly, 2008.

Exams: There will be two examinations, some written assignments, homework assignments, quizzes (announced and unannounced — but roughly one quiz every week), two projects, and a presentation.  On of the projects will involve testing an existing library for performance purposes. The other project will involve programming some algorithms and carrying out an analysis on their performance.  For the presentation, students will present an algorithm research paper from a journal or conference, preferably recent.

For more information about the course, please download the syllabus here.

SUMMARY OF IMPORTANT DATES:

  • Information to be posted soon, as the semester starts

ANNOUNCEMENTS:

  • Week 2: No class on Monday: Labor Day / Quiz on Wednesday!
  • Week 1: Quiz on Wednesday

WHAT TO EXPECT — some of this semester’s milestones:

MATERIAL:

ASSIGNMENTS:

  • Week 16: (december 12)
    • FINAL EXAM on Wednesday December 12 from 4pm to 6:45pm.
  • Week 15: (december 3 and 5)
    • Presentations of projects 2
  • Week 14: (november 26 and 28)
  • Week 13: (november 19 and 21)
  • Week 12: (november 12 and 14)
    • Reading assignment: Chapter 26
  • Week 11: (november 5 and 7)
    • Reading assignment: Chapters 22, 23, 24, 25
  • Week 10: (october 29 and 31)
    • Midterm exam on Monday
    • Greedy algorithms on Wednesday (Read Chapter 16)
  • Week 9: (october 22 and 24)
    • Work on dynamic programming problems in teams
    • Review for midterm on Monday October 29
    • Project 1 due on October 25!
  • Week 8: (october 15 and 17)
    • Read Chapter 16 of Introduction to Algorithms
  • Week 7: (october 8 and 10)
    • Read Chapter 15 of Introduction to Algorithms
  • Week 6: (october 1 and 3)
    • Keep reading chapters 4, 5, and 6 from Algorithms in a Nutshell: you need to have it done by the end of Week 6
  • Week 5: (september 24 and 26)
    • Read Chapter 4 of Introduction to Algorithms
    • Homework assignment: Problem 4.1, Problem 4.6
    • Keep reading chapters 4, 5, and 6 from Algorithms in a Nutshell: you need to have it done by the end of Week 6
  • Week 4:
    • Read Chapters 1 and 2 of Algorithms in a Nutshell
    • Read Chapters 2 and 3 of Introduction to Algorithms
    • Homework assignment: Problem 2.1, Problem 3.1, Problem 3.4, Problem 3.6: homework will be randomly checked on Wednesday September 19th in class: have it ready in a file named: LastName.doc, LastName.docx, or LastName.pdf + your file must be readable without any problem of formatting using open office and word if it is an office document; if your name is called, you will have to send it right after that class.
    • Start reading chapters 4, 5, and 6 from Algorithms in a Nutshell: you need to have it done by the end of Week 6
    • Partial quiz solutions for loop invariants
  • Week 3:
    • Problem 2.3 (p.41) due on Thursday September, 13 at 11:59pm via email with email subject: “[CS5350] FirsName LastName: Homework: Problem 2.3”
  • Week 2:
    • Chapter 2 with special attention to the loop invariant
    • Problem 2.3 (p.41) due on Thursday September, 13 at 11:59pm via email with email subject: “[CS5350] FirsName LastName: Homework: Problem 2.3”
  • Week 1:

Additional material:

Note: More information (such as assignments, reminders for due dates, quizzes, exams) will be posted on this page as the semester goes.

Students: Please register at http://www.piazza.com/utep/fall2012/cs3360 using your utep.edu email address only.

Course Description: In this course we will study concepts and examples of programming languages with the goal of acquiring the tools necessary for critical evaluation and rapid mastery of programming languages and constructs.

TA. Angel Garcia, afgarciacontreras/miners…

His office hours are: Tuesdays and Fridays from 11 to 12:30.

Textbook: It is very important that ALL students have their textbook from Day1 of the semester.

  • Robert W. Sebesta, “Concepts of Programming Languages”, 9th edition, Addison Wesley

Exams: 2 mid-term examinations and one comprehensive final exam; unannounced quizzes.

For more information, please download the  syllabus here.

SUMMARY OF IMPORTANT DATES:

  • First examination: October 15
  • Second examination: TBA
  • Final examination (comprehensive): Wednesday December 12 from 1pm to 3:45pm.

ANNOUNCEMENTS:

  • Week 1: August 27th is our 1st day of classes!
    • COURI program for UnderGraduate Research:

WHAT TO EXPECT — some of this semester’s milestones:

  • Programming projects: 4 of them
    • First programming project on OOP in Java, due September 11th: description and report template.
    • Second programming project on AOP (AspectJ): description
    • Third programming project on functional programming: description, EXTENDED DEADLINE: October 24 at 11:59pm!
    • Fourth programming project on prolog: description, deadline: November 16 at 11:59pm.
    • Fifth programming project on PHP: description, deadline: December 4 at 11:59pm; special rule for extra points: see piazza!
  • First midterm exam on: October 15
  • Second midterm exam: on December 3
  • Final exam on December 12

MATERIAL:

ASSIGNMENTS:

  • Week 15: (december 3 and 5)
    • Second examination on Monday
  • Week 14: (november 26 and 28)
    • Reading assignment on Sections 6.5, 6.6, 6.10, and 6.11 of textbook: quiz on reading on Monday
    • Reading assignment: Chapter 9
  • Week 13: (november 19 and 21)
    • Homework due on Wednesday November 21 (via email to your TA): exercises 6, 8, 10 pp 241–244 Chapter 5 of textbook
    • Quiz on Wednesday!
    • Reading assignment: Chapter 9
  • Week 12: (november 12 and 14)
    • Prolog programming project due on Friday!
    • Make-up quiz on Wednesday
    • Intro to PHP on Wednesday
  • Week 11: (november 5 and 7)
  • Week 10: (october 29 and 31)
    • Do the prolog exercises distributed in class
    • Variables, type binding, storage binding
    • Read Chapters 5, 6, and 16
  • Week 9: (october 22 and 24)
    • Introduction to variables
    • Introduction to Prolog
    • Reminder: Project 4 is due on October 24. Exceptionally, projects turned in either Thursday or Friday by 11:59pm will only incur a penalty of 5 points. After that, the penalty will be back to usual: -10 points per extra day (starting Saturday morning)
  • Week 8: (october 15 and 17)
    • 1st examination on Monday
    • Axiomatic semantics
  • Week 7: (october 8 and 10)
    • Review on Friday for the 1st examination
  • Week 6: (october 1 and 3)
    • Semantics
  • Week 5:
    • Read Chapter 15 on Functional Programming
    • Monday: lab (bring your own laptop) and exercises on Haskell
    • Wednesday: lecture about functional programming
  • Week 4:
    • Read Chapters 3 and 4
    • Homework on AspectJ due Monday night (see piazza)
  • Week 3:
  • Week 2:
    • Read Chapters 2 and 12 of the textbook for Monday.
    • Read Chapter 3 of the textbook for Wednesday.
  • Week 1:
    • Read Chapters 1, 2, and 3 of textbook (quiz on chapters 1 and 2 soon)
    • For those of you who did not attend Monday’s session: Read, print, sign, and turn in the course syllabus

Note: More information (such as assignments, reminders for due dates, quizzes, exams) will be posted on this page as the semester goes.

Course Description: In this course we will study the foundations of constraint programming and solving, of numerical and combinatorial optimization, and we will review some of their applications in Software Engineering (e.g., testing, verifying).

Meeting times: Summer I (from June 11 to July 5), MTWRF from 11:40am to 1:50pm in CCSB room 1.0204.

Textbook: It is very important that ALL students have their textbook from Day1 of the semester.

  • K. Apt, Principles of Contraint ProgrammingCambridge University Press (December 17, 2009)

Exams: 1 mid-term examination and one comprehensive final exam; unannounced quizzes.

Homework: there will be reading assignments and quizzes to assess the reading and understanding of concepts covered in class. There will be some homework given, rarely to be turned in.

Project: the bulk of the work to do outside of the classroom will be about the 4-week long project. The project will involve a literature survey on the topic of your project, proposing a relevant timeline and deliverables, delivering on time, and presenting your work towards the end of the summer I period.

Grades: (see syllabus)

________________________________________________________________________________

SUMMARY OF IMPORTANT DATES:

  • First examination: Friday June 22th.
  • Project: due Tuesday July 3rd. Projects have been assigned on June 12th so by now, all students know their own teams and project topics. More detail to come about the requirements of the projects and deliverables.
  • Final examination: Friday July 6th

ANNOUNCEMENTS:

MATERIAL:

  • CS4365-5354 Syllabus
  • Copy of the daily grading form
  • Outline of the semester lecture and activities: each week will focus on one specific software engineering problem (more details to be posted)
  • Logic programming project: we recommend you use SWI-Prolog

ASSIGNMENTS:

  • Graduate students only:
    • summarize one article per week, to be chosen among the following articles
      • summaries are due on Friday June 22, Friday June 29, Wednesday July 3 (at 11:59pm) via email
  • Week 1:
    • for June 12: read Chapters 1 and 2
    • for June 13: read Chapter 3
    • for June 14: read Chapters 1 and 3 + Chapter 4 for graduate students
    • for June 15: read Chapters 5
  • Week 2:
    • for June 19:
      • read Chapter 5 and 7
      • Assignment to be turned-in on Code-Covering Test Cases: either program a small prototype or review the literature and summarize ideas (possibly your own) about how to proceed
    • for June 20: read Chapters 5 and 7
    • for June 21: re-read all chapters assigned so far, focusing on the topics covered in class
    • for June 22: review all that was covered in class so far for the first MIDTERM on June 22
  • Week 3:
    • No quiz on Monday! (but expect one on every other day of the week)
    • For June 26:
      • Reading assignment: re-read chapter 2 on optimization and chapter 3 (looking at the solving algorithm) + read Chapter 8
    • For June 27:
      • Reading assignment same as of June 26
    • For June 28:
      • Same reading assignment but with a special focus on Chapter 8 (in preparation of class group work on June 28)
    • For June 29:
      • Same as this whole week + chapter 9
  • Week 4:
    • For July 2: reading assignment: review of all chapters and material presented in this course
    • For July 3: all projects are due!
    • July 5: general review
    • July 6: FINAL EXAM!

OFFICE HOURS:

  • June 12: 2pm to 2:50pm
  • June 13: 3pm to 4pm (tentatively)
  • June 14: 10:00am to 10:30am
  • June 15: no office hour
  • June 18: no office hour
  • June 19: 2pm to 3pm
  • June 20: 3pm to 4pm
  • June 21: 2pm to 3pm
  • June 22: no office hour
  • June 25: 3pm to 4pm
  • June 26: 2pm to 3pm
  • June 27: 3pm to 4pm
  • June 28: 2pm to 3pm
  • June 29: no office hour
  • July 2: 3pm to 4pm
  • July 3: 2pm to 3pm
  • July 4: NO CLASS
  • July 5: 2pm to 3pm

Important message: all Tuesday due dates are moved to Thursdays!

Course Description: In this course we will study concepts and examples of programming languages with the goal of acquiring the tools necessary for critical evaluation and rapid mastery of programming languages and constructs.

TAs. Aditi Barua, abarua/miners… and Angel Garcia, afgarciacontreras/miners…
Their office hours are: Friday morning from 11am to 1pm for Angel in the research lab of the second floor, and Wednesday from 9am to 11am for Aditi, in room 3.1202F.

Textbook: It is very important that ALL students have their textbook from Day1 of the semester.

  • Robert W. Sebesta, “Concepts of Programming Languages”, 9th edition, Addison Wesley

Exams: 2 mid-term examinations and one comprehensive final exam; unannounced quizzes.

Grades:
Midterms                                         15% each
Final exam                                        20%
Quizzes and homework                  22%
Projects                                       23%
Class participation                      5%

SUMMARY OF IMPORTANT DATES:

  • First examination: Tuesday February 28th.
  • Second examination: Thursday April 11th
  • Final examination (comprehensive): Thursday May, 10th from 1pm to 3:45pm.

ANNOUNCEMENTS:

  • Week 13:
    • The deadline for programming project 4 has been extended!
    • Extra-credit programming project will be available this week (due May 3rd)
    • Look at the homework assignment for week 14!
  • Week 3:
    • First programming assignment will be given in class on Tuesday and will be due by February 21!
  • Week 1: January 17th is our 1st day of classes!
    • COURI program for UnderGraduate Research:

WHAT TO EXPECT — some of this semester’s milestones:

MATERIAL:

ASSIGNMENTS:

  • Note: unless otherwise specified, homework will be due via email on Thursdays before the class starts
  • Week 15:
    • Reading assignment: Chapters 3 and 4
    • Homework assignment: Chapter 3 Problem set # 22.c, 23, 24, and 25.
  • Week 14:
    • Reading assignment: Chapter 3, Section 3.5 and Chapter 4.
    • Homework assignment (due Thursday): Chapter 3, problem set #6, 11, 15, 17, 19.
  • Week 13:
    • 2nd Exams back on Tuesday!
    • Please note that the deadline for PP4 has been extended (one more week to complete it!)
    • Extra-credit programming project given on Tuesday, due on May 3rd
    • Reading assignment: Chapter 16 (on logic programming); Section 3.5 of Chapter 3 (on semantics)
  • Week 12:
    • Review on Tuesday
    • SECOND EXAMINATION on Thursday: list of topics now available (see in your emails)
    • Homework assignment: Programming exercises 4, 5, and 6 of Chapter 5, due Thursday
  • Week 11:
    • Topic of the week: data types
    • Reading assignment: Chapter 6
    • Advice: start working now on the homework for next week!
  • Week 10:
    • Topic of the week: variables and binding
    • Reading assignment: Chapters 5 and 6
    • Assignment will be given in class and due Thursday March, 29th
    • QUIZ on Thursday!
  • Week 8:
    • DO NOT FORGET THAT YOU HAVE A PROJECT DUE THURSDAY!
    • Reading assignment: Chapter 15 on functional programming
  • Week 7:
    • FIRST EXAMINATION ON TUESDAY!!!
    • Topics include: syntax (BNF, EBNF) and semantics (attribute grammars only), OOP, AOP
  • Week 6:
    • First programming project due on Tuesday Thursday February 21 23 (description)
    • Reading assignment: review all class notes, all chapters assigned so far. The first examination is around the corner: scheduled for February 28th!
  • Week 5:
  • Week 4:
  • Week 3:
  • Week 2:
    • Presentation about COURI, by Lourdes Echegoyen, on Tuesday, followed by a quiz
    • Read Chapters 1, 2, and 3 of textbook
  • Week 1:
    • Read Chapters 1, 2, and 3 of textbook (quiz on chapters 1 and 2 on Jan. 19)
    • For those of you who did not attend Monday’s session: Read, print, sign, and turn in the course syllabus

Note: More information (such as assignments, reminders for due dates, quizzes, exams) will be posted on this page as the semester goes.

VERY IMPORTANT: ALL students SHOULD HAVE THEIR TEXTBOOKS BY DAY 1 of classes!!!

Course Description: The purpose of this course is to present the student with the mathematical techniques used for analyzing the time and space performance of computer algorithms.  The focus will be on the practical application of these techniques to designing efficient algorithms.  The following topics will be covered: asymptotic notation, recurrences, lower bounds for worst case and average case, dynamic programming, searching algorithms, sorting algorithms, graph algorithms, and if time allows, parallel algorithms, string matching algorithms.

Textbooks:

It is very important that ALL students have their books from Day 1.

  • “Introduction to Algorithms”, by Cormen, Leiserson, Rivest, and Stein, Third Edition, McGraw Hill
  • “Algorithms in a nutshell”, by Heineman, Police, and Selkow, by O’Reilly, 2008.

Exams: There will be two examinations, some written assignments, homework assignments, quizzes (announced and unannounced — but roughly one quiz every week), two projects, and a presentation.  On of the projects will involve testing an existing library for performance purposes. The other project will involve programming some algorithms and carrying out an analysis on their performance.  For the presentation, students will present an algorithm research paper from a journal or conference, preferably recent.

Grades:
Test 1                                         20%
Test 2                                         20%
Presentation                               8%
Quizzes                                     15%
Homework assignments         10%
Projects                                       22%
Class participation                      5%

SUMMARY OF IMPORTANT DATES:

ANNOUNCEMENTS:

  • Week 14:
    • Monday November, 21st: Project #2 Presentation by the team working on Convex Hulls
  • Week 12:
    • Short quiz on Monday and review for the exam
    • Long quiz on Wednesday
  • Week 11:
    • Group quiz on Monday!
    • Grades for project 1 are ready: please stop by my office if you want to know your grade.
    • The second extra credit assignment is now available on this page.
    • Wednesday: office hours are exceptionally changed! they will be from 10:30 to 11:45 instead of the usual time.
  • Week 10:
    • Quiz on Monday!
  • Week 9:
    • Quiz on Monday!
  • Week 8:
    • Quiz on Monday! and Quiz on Wednesday!
  • Week 7:
    • Quiz on Monday! (on Chapter 4) and on Wednesday!
    • Project #2: make plans to meet with me asap as a group of all the people who picked the same project topic area! Check: http://meetwith.me/mceberio to suggest meeting times (suggest 3 meeting times of half an hour each so that I can pick)
  • Week 6:
    • The first exam is scheduled on Wednesday September, 28th.
  • Week 5:
    • Quiz on Monday!
  • Week 4:
    • Quiz on Monday!
    • Remember that you have to send me your projects’ preferences!!!
    • Project topics (for project 2) have been assigned: check your mailboxes!
  • Week 3: No class on Monday: Labor Day. As a result, the office hours of Monday are moved to Tuesday from 1:30pm to 2:30pm / Quiz on Wednesday!

WHAT TO EXPECT — some of this semester’s milestones:

  • An article to summarize: Due by November 4!
    • See the guidelines for this assignment
    • Make sure that you joined the shared folder to have access to the articles for your assignment
    • In case you forgot, you can review your individual article assignment here
  • Semester-long projects: Due by the end of week 14!
    • A list of projects (for projects #2) will be proposed during week 3
    • Students need to have chosen a project (#2) by the end of the last course of Week 4
    • Assignment #1 (group assignment): write a tutorial. Due by Friday October, 28
  • Short projects: Due on October 21, 2011!!!
  • First midterm exam on September 28th (week 6), topics covered in the exam
  • Final exam on Monday November, 16th (week 13)

MATERIAL:

ASSIGNMENTS:

  • Note: unless otherwise specified, homework will be due via email on Wednesdays at 5pm (from the students whose names are called in class).
  • Week 12: (Nov. 7 to Nov. 11)
  • Week 11: (Oct. 31 to Nov. 4)
    • Article summary assignment — Due by Friday November, 4
    • Reading assignment: same as week 10.
    • Homework assignment:
      • Turn in either of the following proofs: proof that the Huffman’s code algorithm has the greedy choice property; or proof that the greedy approach to the fractional knapsack problem (as discussed in class) has the greedy choice property.
      • Turn in a proof that the 0-1 knapsack problem does not have the greedy choice property.
  • Week 10: (Oct. 24 to 28)
    • Extra-credit assignment: Proof of the master theorem in your own words (more details to come soon) — Due by Friday October, 28
    • Project #2: Tutorial due Friday October, 28
    • Reading assignment:
      • Chapters 15 and 16 from the Cormen textbook
      • Chapter 26 of the Cormen textbook and Chapter 8 of Algos. in a Nutshell
    • Homework assignment:
      • (not to be turned in… yet 🙂 ): Exercises 16.1.* from the Cormen textbook
  • Week 9: (Oct. 17 to 21)
    • Project #1: Final deadline on Friday October, 21 at 11:59pm (see the project guidelines)
    • Homework assignment: Deadline extended to Monday October, 24th
      • Problem 15.3 from Cormen textbook
    • Reading assignment:
      • Chapters 15 and 16 from Cormen texbook
      • pp. 165-171 of Algorithms in a Nutshell
  • Week 8: (Oct. 10 to 14)

    • Homework assignment:
      • Exercises 15.1.5 (p. 370 of Cormen textbook), 15.2.1 and 15.2.3 (p. 378) are to be turned in; hints of solutions now available.
      • Reminder: besides the exercises to be turned in, you have to practice on as many exercises as possible
    • Reading assignment:
      • Chapters 15 and 16 from Cormen texbook
      • pp. 165-171 of Algorithms in a Nutshell
  • Week 7: (Oct. 3 to 7)
    • Homework assignment:
      • Problem 4.6 of Introduction to Algorithms; solution hints now available
    • Reading assignment:
      • Chapter 4 of Introduction to Algorithms
      • Part II (Chapters 6,7,8) and III (Chapters 10, 11, 12) of Introduction to Algorithms: the purpose of this reading assignment is to refresh  everybody’s mind about the material of the course that is a pre- requisite to CS5350.
  • Week 6: Week of Exam 1!!!
    • Homework assignment: no homework to turn in. However, students are encouraged to practice on the exercises from the book.
    • Reading assignment: review of all chapters that were assigned previously
    • Project #1 (reminder): intermediate deadline coming up this Friday! (see the project guidelines if you don’t remember what you have to do)
  • Week 5:
    • Homework assignment: Solution hints
      • To be turned in: Problems 2.1, 3.6
      • Not to be turned in but likely to appear on a quiz or test: all exercises 3.1.*; Problem 3.4
    • Reading assignment: Chapters 3 and 4 of Introduction to Algorithms
  • Week 4:
    • Homework assignment: 2.2.1, 2.2.2, Problem 2.3 (due Wednesday of Week 4 by 5pm / via email); Solution Hints
    • Reading assignment: Chapter 2 Section 2 of Introduction to Algorithms, Chapters 2 and 4 of Algorithms in a Nutshell
  • Week 3:
    • Homework assignment: 2.1.3 and 2.1.4, from Introduction to Algorithms
    • Reading assignment: Introduction to Algorithms, Chapter 2, Sections 2.1 and 2.2.
  • Week 2:
    • Same reading assignments as for Week 1
    • Homework assignment: TBA (due Wednesday September, 5th)
  • Week 1:
    • Read Chapters 1 and 2 of both textbooks
    • For those of you who did not attend Monday’s session:
      • Read, print, sign, and turn in the course syllabus
      • Check your email: I sent you documents for you to work on on Wednesday, in groups

Additional material:

Note: More information (such as assignments, reminders for due dates, quizzes, exams) will be posted on this page as the semester goes.

VERY IMPORTANT: ALL students SHOULD HAVE THEIR TEXTBOOKS BY DAY 1 of classes!!!

Course Description: The purpose of this course is to present the student with the mathematical techniques used for analyzing the time and space performance of computer algorithms.  The focus will be on the practical application of these techniques to designing efficient algorithms.  The following topics will be covered: asymptotic notation, recurrences, lower bounds for worst case and average case, dynamic programming, searching algorithms, sorting algorithms, graph algorithms, and if time allows, parallel algorithms, string matching algorithms.

Textbooks:

It is very important that ALL students have their books from Day 1.

  • “Mathematical Logic for Computer Science”, by Lu Zhongwan, Second Edition, World Scientific Publishing.
  • “Logic in Computer Science: Modeling and Reasoning about Systems”, by Michael Huth, Cambridge University Press.

Additional recommended reading:

  • Introduction to Mathematical Logic, by Elliott Mendelson, Fifth Edition, CRC Press.
  • Sets, Logic and Maths for Computing (Undergraduate Topics in Computer Science), by David Makinson
  • The Nuts and Bolts of Proofs, Third Edition: An Introduction to Mathematical Proofs, by Antonella Cupillari
  • How to prove it: a structured approach, by Daniel Velleman

Exams: There will be two tests, some written assignments, quizzes (announced and unannounced), a project and a presentation.  For the presentation, students will individually present an algorithm research paper from a journal or conference, preferably recent.

Grades:
Test 1                                         20%
Test 2                                         25%
Presentation                              10%
Quizzes and Assignments          15%
Project                                       25%
Class participation                      5%

Announcements:

  • Week 5: the office hours of Tuesday will be moved to Tuesday morning: 10am to 11:30am and Wednesday morning from 11am to noon.
  • No class on February 1st: an assignment will be given in replacement of the class / to be posted later
  • Midterm exam on March 8th! topics are everything we have covered since the start of the semester. The exam will be an hour and 20 minutes long. If you cannot make it, you should let me know BEFORE March 8th and reschedule the exam by March 15th at the latest.
  • No class on March 22nd: an assignment will be given in replacement of the class / to be posted later
  • No class on Cesar Chavez day (March 31)
  • Don’t forget that April 25 is the deadline for you to pick your project option (presentation or deliverables only)
  • Final examination on April 28!!! topics to be covered are everything we covered since the start of the semester. If you cannot make it, you should let me know BEFORE April 28th and reschedule the exam by May 5th at the latest.

What to expect — some of this semester’s milestones:

  • Semester-long projects:
    • List of projects
    • Projects will be proposed during week 3: see below for the list of projects / also sent as email to all students enrolled in the class
    • Students need to have chosen a project by the end of the last course of Week 5 (i.e., February, 17 at 3pm) Week 6 (i.e., February, 24 at 7pm): extension due to severe weather early February
    • Week 15 and week of the finals: project presentations
  • First midterm exam during week 8, on Tuesday March 8st.
  • Article presentations: week 12.
  • Final exam on Thursday April, 28th

Material:

Assignments:

  • Week 11:
    • Reading assignment: Chapter 3, Sections 4, 5, and 6, as well as Chapter 5 from Mathematical Logic for Computer Science
    • Homework assignment, due April 14:
      • exercises 3.4.2 [3,4], 3.4.3 [1,2,5,6], and 3.6.1, from Mathematical Logic for Computer Science
    • Project assignment #2, due April 18: write a tutorial-type document about the topic of your project; to be done in team; here are detailed guidelines for assignment #2
  • Week 10:
  • Week 9:
    • Reading assignment: predicate logic, chapter 3 of Mathematical Logic for CS and  chapter 2 (2.1 and 2.2) of Logic in Computer Science
    • Homework assignment:
      • exercise 2.1 [1,2,3] p. 157 of Logic in Computer Science
      • exercises 2.6.3 [1,4] and 2.6.5 [3], p. 57, from Mathematical Logic for CS
  • Week 8:
    • Reading assignment: predicate logic, chapter 3 of Mathematical Logic for CS and  chapter 2 (2.1 and 2.2) of Logic in Computer Science
    • No homework assignment: week of midterm exam
    • Project: description (both individual description and group questions) are due on March 11th at 7pm
  • Week 7:
    • Reading assignment: pages 42 to 65 of Mathematical Logic for CS
    • Homework: exercises 2.5.3 [3,4] and 2.5.2 [2,6] of Mathematical Logic for CS
  • Week 6:
    • Reading assignment: same as for week 5, more specifically pages 42 to 65 of Mathematical Logic for CS
    • Homework:
      • Exercises 2.3.1, 2.4.1, 2.4.4, 2.4.5, from Mathematical Logic for Computer Science
  • Week 5:
    • Reading assignment:
      • Chapter 2 of Mathematical Logic for CS
      • Chapter 1, sections 1.1, 1.3, 1.4, 1.5 of Logic in CS
    • Homework will be given in class: due Feb. 22
    • Quiz on Thursday!
  • Week 4:
    • Reading assignment: propositional logic (introduction, description, use)
    • Projects: brainstorm about a CS project that involves logic; write a paragraph describing it, due on Feb. 15 (Tuesday of week 5)
    • Quiz on Thursday!
  • Week 3:
    • Reading assignments: sets and functions (Chapter 1 of the first textbook, or notes posted on this website)
    • Homework due on Thursday February, 3:
      • exercises 8 and 11 of the list of exercises titled “Exercises on Induction”
      • exercise 2 of the list of exercises titled “Induction”
      • exercises 3 and 4 of the list of exercises titled “Exercises on Sets and Functions
    • Assignment for February, 1: a prolog assignment due on February, 8 !!! Now due on Feb. 15 !!!.
  • Week 2:
    • Homework due on Thursday January, 27:
  • Week 1: due on Thursday January, 20
    • Review sets and functions
    • Homework [DUE and randomly checked]: List several (at least 3) applications of these in computer science: detail and justify each item of your list.

Note: More information (such as assignments, reminders for due dates, quizzes, exams) will be posted on this page as the semester goes.

VERY IMPORTANT: ALL students SHOULD HAVE THEIR TEXTBOOKS BY DAY 1 of classes!!!

Course Description: The purpose of this course is to present the student with the mathematical techniques used for analyzing the time and space performance of computer algorithms.  The focus will be on the practical application of these techniques to designing efficient algorithms.  The following topics will be covered: asymptotic notation, recurrences, lower bounds for worst case and average case, dynamic programming, searching algorithms, sorting algorithms, graph algorithms, and if time allows, parallel algorithms, string matching algorithms.

Textbooks:

It is very important that ALL students have their books from Day 1.

  • “Introduction to Algorithms”, by Cormen, Leiserson, Rivest, and Stein, Third Edition, McGraw Hill
  • “Algorithms in a nutshell”, by Heineman, Police, and Selkow, by O’Reilly, 2008.

Exams: There will be two tests, some written assignments, quizzes (announced and unannounced), a project and a presentation.  The project will involve programming some algorithms and carrying out an analysis on their performance.  For the presentation, students will individually present an algorithm research paper from a journal or conference, preferably recent.

Grades:
Test 1                                         20%
Test 2                                         20%
Presentation                              15%
Quizzes and Assignments          15%
Project                                       20%
Class participation                      5%

Announcements:

  • Weeks 15 and 16 (finals’ week):
    • Projects presentations
  • Week 14:
    • More work on projects, no class
    • Projects reports due by Sunday November, 28th at 7pm via email to your instructor
  • Week 13:
    • Final exam on Monday November 15th
    • Work on projects on Wednesday: no class / instructor available for questions
  • Week 12:
    • Presentations of articles in class: 5- to 7-minute presentations
  • Week 11:
    • Long quiz on Monday November, 1 at 1:30 until 2:50pm: objective = to get ready for the exam scheduled on Monday November, 15.
  • Week 6:
    • First exam on Monday September, 27 at 1:30pm until 2:50pm.
    • There will be no office hours since Dr. Ceberio will be out of town attending a conference.
  • Week 5: The Monday office hours will exceptionally be moved to Tuesday from 10am to noon.
  • Week 3: Since Monday is a day off, office hours from Monday will be moved to Tuesday from 10am to noon.

What to expect — some of this semester’s milestones:

  • Semester-long projects:
    • Projects will be proposed during week 3: see below for the list of projects / also sent as email to all students enrolled in the class
    • Students need to have chosen a project by the end of the last course of Week 4 (i.e., September, 15 at 3pm):
    • IMPORTANT! Project assignments were sent out to all students on Wednesday September, 15. You should all be now working on them as all projects require your full attention until the end of week 14.
    • Project meetings with instructor: Week 9-10 / week 11-12 / week 14
    • The second half of week 13 will be dedicated to working on your projects
    • Week 14: no class but you will have to meet with me to report on your project’s progress
    • Week 15 and week of the finals: project presentations
  • First midterm exam on September 27th
  • Article presentations: week 12 (Nov. 8 and 10); articles will be given to students on October 27th.
  • Final exam the Monday November, 15th

Material:

Assignments:

  • Week 10:
    • Reading assignment: Chapter 8 of Algorithms in a Nutshell and Chapter 26 of Introduction to Algorithms
    • Homework:
      • Prepare a presentation of the Ford-Fulkerson method. Show how it can be implemented different ways with different performances.
      • Prepare a presentation of the example of the FF method as shown on your book, p. 726.
  • Week 9:
    • Reading assignment: Chapters 16 and 17 of Introduction to Algorithms.
    • Extra-credit due by November 3rd on paper
    • Homework due by October 27 at the start of the class (randomly picked) + some exercises given in class on showing the greedy choice property
  • Week 8:
    • Reading assignment: Chapters 15 and 16 of Introduction to Algorithms, Chapter 6 of Algorithms in a Nutshell
    • Homework assignment:
      • Work on the matrix chain multiplication problem, as described in class, for Wednesday October, 13
      • More homework to be randomly picked-up next Monday (October 18): description of exercises
  • Week 7:
    • Reading assignment: Chapters 15 and 16 of Introduction to Algorithms, Chapter 6 of Algorithms in a Nutshell
  • Week 5:
    • Reading assignment: Chapters 4 and 5 of Introduction to Algorithms
    • Homework assignments:
      • Exercises 4.1.1, 4.1.2, 4.1.3, 4.1.5
      • Problems 3.1 and 3.4
    • Extra-exercises to work on:
      • 4.3.1, 4.3.2, 4.3.3, 4.3.6, 4.3.9
      • 4.4.2, 4.4.4, 4.4.5, 4.4.6, 4.4.7, 4.4.8
    • Extra credit: Due via email by Friday Sept. 24 at 7pm: Write an explanation of the proof of the master theorem in your own words (potential for extra points: 10 points towards the sum of the exams’ grades)
  • Week 4:
    • Reading assignment: Chapter 4 of Introduction to Algorithms, revision of Chapters 1 and 2 + Chapters 3 and 4 of Algorithms in a Nutshell
    • Homework assignments:
      • Prove all properties of transitivity, reflexivity, etc. from your textbook Introduction to Algorithms that we did not do together in class
      • Exercises 3.1.2, 3.1.4, 3.1.5, 3.1.7, 3.1.8
  • Week 3: Read Chapter 3 of Introduction to Algorithms and Chapter 2 of Algorithms in a Nutshell. There will be a quiz on Wednesday September, 8th on the whole 3.2 section.
    • Homework: Exercises given in class and exercises 3.2.1 and 3.2.2 from Introduction to Algorithms
    • Exercises given in class were:
      • To show how the recursive Fibonacci number computation is an example of Divide and Conquer algorithm
      • To present one algorithm (different from what we saw in class) that is a Divide and Conquer algorithm, and show that it is actually one
      • To do the problem on Horner’s rule from the Introduction to Algorithms textbook
      • To do the problem on Insertion and Merge sort from the Introduction to Algorithms textbook
  • Week 2: Read Chapters 2 and 3 of Introduction to Algorithms
  • Week 1: Read Chapters 1 and 2 of both textbooks

Some material:

Note: More information (such as assignments, reminders for due dates, quizzes, exams) will be posted on this page as the semester goes.

Syllabus available here

Important information is also available about: how and when to contact your instructor, labs, etc.

This course is a survey of classic algorithms and data structures, useful for sorting, manipulating graphs, storing data collections and mappings. Students will acquire an understanding of generalization techniques for evaluating the complexity of these algorithms, and they will be able to apply these algorithms to a wide range of computer science problems. Introductory techniques for determining correctness and evaluating complexity will be presented. Students are expected to master basic skills and to develop an intuitive understanding of how the surveyed analysis techniques are commonly used. The main objective is that students develop their critical thinking skills and become able to make an appropriate choice of data structures given any problem, and to justify their choice in an articulate explanation.

As far as assignments and exams , there will be:

  • reading assignments, and homework assignments (randomly checked);
  • (announced AND un-announced) quizzes throughout the semester;
  • programming assignments: 4 or 5 of them (most probably 5) — turning all of them and making at least a C at each of them are required to pass the class;
  • 3 mid-terms;
  • 1 final exam.

Teaching Assistant
The labs will be held by a teaching assistant. Name and e-mail address of your TA: Jaime Nava, jenava@miners.utep.edu

Peer Leading Sessions
Peer Leading sessions will be held each week during half of the lab times. Two peer-leaders are in charge of those sessions: Cesar Chacon, crchacon@miners.utep.edu, and ??, ??@utep.edu. For more information about peer-leaders and peer-led team learning, go to this website.

Textbook: Data Structures outside in, with Java, by Sesh Venugopal, Eds. Pearson Prentice Hall.