October 30, 2003

Bulk view

Teaching a Java-based CS1 Course in an Academically-Diverse Environment — education



The Texas Christian University (TCU) Computer Science
Department was established in 1981. From the outset, the Department’s
CS1 course has presented significant teaching challenges due to the
wide diversity of student’s taking the class. Traditionally, only
25-35% of the students enrolled in the course are computing science
majors, the remaining being students from a wide diversity of
disciplines, many of which are non-science based. Despite the
diversity, it has been necessary for the course, and its content, to
be structured to satisfy essential core requirements for students
majoring in computer science and computer information science as well
as to meet program requirements for the many non-computer science
majors taking the course. This paper discusses some of the unique
issues associated with teaching a Java-based CS1 course to a very
diverse group of students, the majority of which have very
unsophisticated problem solving skills, and little or no programming
expertise. A representative set of experiments and programming
assignments are included.

Their CS1 course is taken by people from lots of courses.

Oooh, interesting idea: experiment component as part of most
programming exercises. Students are required to conduct experiments. –
questions about the code. This is pretty nice. In fact, they introduce
API reading and inheritance early…

Let’s experiment with AWT-first next semester. Might be fun.

Firebird / Mozilla and Gnus for mail


Interesting snippet on how to get Gnus to be your mail client for Firebird or Mozilla.

  1. Install mozex extension from http://mozex.mozdev.org
  2. Make a shell script called mailer.sh:
         /usr/bin/gnuclient -eval "(gnus-msg-mail \"$to\" \"$sub \")"
  3. configure mozex to call mailer.sh with as
         mailer.sh %a

Playing around with planner-search-notes

(defun planner-search-notes (regexp)
  "Return a buffer with all the notes returned by the query for REGEXP."
  (interactive "MRegexp: ")
  (with-emacs-wiki-project planner-project
    (let ((results (planner-search-notes-internal regexp)))
      (if results
             (get-buffer-create (generate-new-buffer-name
                                 (concat "Planner Search: " regexp))))
            (setq emacs-wiki-current-project planner-project)
            (mapcar (lambda (item)
                      (insert (car item) "\t"
                              (cadr item) "\n"))
            (goto-char point-min)
            (display-buffer (current-buffer)))
        (message "No results found.")))))

(defun planner-search-notes-internal (regexp)
  "Return an alist of all notes in daily plan pages containing REGEXP.
The alist is of the form ((REFERENCE . TEXT) (REFERENCE . TEXT))."
  (let ((pages (sort (copy-sequence (emacs-wiki-file-alist))
                     (lambda (a b)
                       (string< (car a) (car b)))))
        page start anchor text results)
    (while pages
      (setq page (caar pages))
      (when (string-match planner-date-regexp page)
          (insert-file-contents-literally (cdar pages))
          (setq start nil)
          ;; Find the first note
          (when (re-search-forward "\\.\\(#[0-9]+\\)\s+\\(.*\\)" nil t)
            (setq start (match-beginning 2))
            (setq anchor (match-string 1))
            (setq title (match-string 2)))
          (while (re-search-forward "\\.\\(#[0-9]+\\)\s+\\(.*\\)" nil t)
            ;; The text between start and (1- (match-beginning 0))
            ;; is the note body.
            (setq text (buffer-substring start (1- (match-beginning 0))))
              (when (string-match regexp text)
                (add-to-list 'results (list (concat page anchor)
            (setq start (match-beginning 2))
            (setq anchor (match-string 1))
            (setq title (match-string 2)))
          (when start
            (setq text (buffer-substring start (point-max)))
            (when (string-match regexp text)
              (add-to-list 'results (list (concat page anchor)
      (setq pages (cdr pages)))