CSE250, Spring 2013---Resources

Search Trees and Other Dictionary Structures Applet, by "Kuko" from Slovakia.

Tree Operations Visualization Applet. Has gotten funky in its old age.

Sorting-Algorithms.com, with animations in "stick" form. They go a little quick, and are better for high-level comparisons than for seeing how each code operation works. Note this summary:

"The ideal sorting algorithm would have the following properties:

  • Stable: Equal keys aren't reordered.
  • Operates in place, requiring O(1) extra space.
  • Worst-case O(n*log(n)) key comparisons.
  • Worst-case O(n) swaps.
  • Adaptive: Speeds up to O(n) when data is nearly sorted or when there are few unique keys.
There is no algorithm that has all of these properties, and so the choice of sorting algorithm depends on the application."

FileZilla tutorial, and more on FileZilla from Adrienne Decker.

File of Some Compilation Errors, submitted by students and instructors in Fall 2009, a work-in-progress... See if doing page-search on a word or words from your error message finds any help here. Search the string "platform:" to browse individual entries.

Visual C++ Studio Start Page. Also see the download page.

Mike Prentice's CSE250 Bookmarks, including:

Big Page of Student-Submitted Links from previous CSE250 terms.


General C++ Resources

Homepage of C++ creator Bjarne Stroustrup, AT&T and now a professor at Texas A&M. Possible high page-load times, e.g. caused by big photograph.

  • Article on teaching C++>, May 2009.
  • Article on why explicit template requirements a-la Java 5 got axed from the upcoming "C++0x" revision of C++. Note the following statements:
    • "...In particular, every example I have ever given of C++0x code that does not use the keywords 'concept' or 'requires' is unaffected [by the axing]." [emphasis by KWR]
    • "Concepts" were to have been the central new feature in C++0x for putting the use of templates on a better theoretical basis, for firming-up the specification of the standard library, and a central part of the drive to make generic programming more accessible for mainstream use. For now, people will have to use 'concepts' without direct language support as a design technique." [KWR: our K-W textbook is on this wavelength with its use of "traits".]
    • "My principles for 'concepts' are:
      • * Duck typing---The key to the success of templates for GP (compared to OO with interfaces and more) [KWR: e.g. compared to Java 5 and C#]
      • * Substitutability---Never call a function with a stronger precondition than is 'guaranteed' [KWR: note how this jives with what I'm trying to teach, using the older Design-By-Contract requires/ensures (REQ/ENS) terminology]
      • * "Accidental match" is a minor problem---Not in the top 100 problems
    • [Stroustrup objected to the proposed design as being too complex---e.g. with too much explicit syntax. If you think our K-W text is tricky enough with syntax that already exists, he hears you! The article ends with a list of non-axed features, including several mentioned in lectures as Java 5 features C++ currently lacks.]

CPlusPlus.com, especially for these references:

  • string library, including the string class itself. (When you click on a method, look carefully at the green lines at top to see the overloads and return types.)
  • iostream library, with clickable inheritance chart at the top.
  • vector class. Note especially the running-time specs near the top. ("Amortized" means averaged over successive tries.)
  • STL Containers. Again note the running times in the big charts on this page.
  • C++ Language Tutorial, commendably brief, considering the complexity of the language. Section on templates especially recommended, including the linker note at the bottom.

C++ FAQ LITE Not so "lite" as the above tutorial even, but it seems to include every point being emphasized in lectures and recitations.

Nice PDF handout on C++ strings, from a course now at Stanford. (The overall handout page for that course.)

CppReference.com Wiki, including STL reference. (However, I prefer CPlusPlus.com because they show the full signatures of methods, while this site doesn't.)

Fredosaurus' C++ Reference, notes of varying quality:



General Resources

A good vi tutorial. I say "good" because after the 2nd page it gives you an option to say you've "seen all you need to see of vi for now".

UB IT pages, including Software (with downloads).

CSE-Specific Home Connection Instructions/Options.

Instructions on Setting Up Home Environments, including special instructions for C++ in Eclipse for Windows, MacOS, and Linux.

Fall 2010 Note: Change "europa" to "helios" in the relevant URL mentioned in the above special-instructions link.

Note: These instructions have out-of-date version links. A student setting up Eclipse in my office succeeded using these newer download links, and following the "For Windows" instructions carefully (both sections not just the top section). This worked OK on a 64-bit Win laptop, even though this is a 32-bit install. The newer download links are:

MinGW-5.1.6.exe
debugger (tar.gz file)

UB Undergraduate Advising: "High School vs. College".

General CSE Resources, as linked last term. Some highlights:

Bill Rapaport's How To Study Guide. Note especially:

  • 3. Take Notes in Class & Rewrite Them at Home

  • 3.1. Take Notes
  • 3.2. Take Complete Notes The key idea of taking good notes in class is to write down as much as possible...
  • 3.3. Use Abbreviations [KWR: especially fn, impt, NB, Q/qn, re, stmt, w/, w/o, and the seven logic ones at the end.]
  • 3.4. Neatness Doesn't Count.
  • 3.5. Ask Questions & Make Comments [KWR: and when the instructor says a Q is impt, NB!]
  • 3.6. Copy Your Notes at Home [KWR: And especially, code files given out as notes should be compiled, run, and studied at home (or a terminal here)!---but you need not copy them, "compile" is good enough...]
  • 3.7. Don't Take Notes on a Computer
  • 3.8. Don't Rely on the Instructor's Lecture Notes If all you do with them is print them out, maybe read them once, and save them, they are useless, because you are using them passively. You need to treat them just as you would with your own lecture notes: Re-write them! Better yet: Use them to fill in gaps in your own re-written lecture notes, and to check whether you had any mistakes in your own notes. (You may find new material in the instructor's notes that was not discussed in class, or you may find material in your own notes that was discussed in class but did not find their way into the prepared notes.)
  • ...
  • 5. Read Texts Actively & Slowly, before & after Class