Real Intro-to-CS projects

My friend is at the same college as me and is taking an intro-to-CS class. I offer help to him when he needs it, and looking at these projects, I can see why.

1: https://drive.google.com/file/d/0B6gYqBQuTG-9ZFczYUlsU0l5bjg/view?usp=sharing
2: https://drive.google.com/file/d/0B6gYqBQuTG-9czVUbXh0aDdFV2c/view?usp=sharing
3: https://drive.google.com/file/d/0B6gYqBQuTG-9OUFCUFRVdDdxeU0/view?usp=sharing
4: https://drive.google.com/file/d/0B6gYqBQuTG-9c1dUZzBILTdfLUU/view?usp=sharing

The project specifications are pretty poorly worded and vague or ambiguous at best. Even worse is what the projects are requiring the students to do.

Project 1: Converting between arabic (decimal) numbers and roman numerals - not so bad, except that the input file is also the output file. Not only that, read the hint:
Project 1 wrote:
Hint: seekg(), seekp(), tellg() and tellp() will be your friends for this project. Don’t be afraid to use them.
Given the unknown nature to the number of lines in the file, arrays will not be useful here.
The professor is suggesting to use binary seeking. For text files. Which will be opened in text mode. My solution to this project does not involve any of these functions and instead I use formatted input. My friend got around the we-haven't-been-taught-vectors-yet problem by writing to a temporary file and then replacing the original via C's remove() and rename().

Project 2: Expands on Project 1 by adding an interactive console-base interface to let the user sort/search with two different algorithms each. My main issue with this assignment is that the class has still yet to teach how to actually write code, and is instead focusing on the algorithms. My friend understood the workings of the algorithms very well but struggled with writing the code needed to implement them. Additionally, the assignment asks the students to duplicate output to both the console and to a log file. It can't seem to make up its mind on what it wants and so asks for everything however unrelated.

Project 3: Evaluate the results of (very limited) mathematical expressions. Not so bad, except for one problem: the assignment requires use of dynamic memory in the form of manually managing dynamically allocated arrays. I should point out that my friend says they were not taught how to do this until after submitting Project 2. To this day they still have not even heard mention of vectors.

Project 4: Builds upon project 2 by adding a couple new options to the console-based interface. The main thing is adds, however, is a requirement to use signly-linked lists. And to only support binary search (which means deleting the existing linear-search code). Not to mention more ambiguity and vagueness.

When it comes to the algorithms and data structures being taught, my friend has a pretty good idea about what's going on. Until I ask him to show me the code he would write for it. "Umm, they didn't teach us that yet." is his usual response. And I believe him. Just to make things clear, the class claims to teach C++.

In case it isn't obvious, I am very unhappy with the way the class is being taught just by looking at the projects. Maybe my friend isn't paying good attention in class, but the project PDFs are real and unmodified.
Last edited on
...yikes. My college has a similar issue with its game design classes- it teaches them in Java. And teaches them to do things like Swing and JFrame. By hand. At least the intro class doesn't do that- then again, it is in java.
I'd send a complaint to the CS Department Chair. The assignments have quite a few screw-ups for a professor of CS, even if it is an intro course.

General issues
Project 1: User is being asked to modify a text file in-place to insert data. (Never do that.)

Project 2: User is being asked to do too much for an intro to CS course. (Two sorts * two search methods * two sort orders * two sort keys * user interface + dynamic memory + preload (to count number of items in file) + split output between two streams + significant modification to Project 1's functionality.) That is complete overkill for an introduction to CS. (Is the professor trying to discourage students from pursuing CS?)

Project 3: Nonstandard language. (What the heck are stationary and mobile pointer notations?)

Project 4: User is asked to use a binary search over a linked list. (Does professor understand the purpose of a binary search?)

C++ issues
User is being asked to use seek[g|p]()/tell[g|p]() on a text file. (A well-known, spectacularly awful flaw in iostreams. And, since user is required to use Windows, it is an issue guaranteed to bite students who obey the injunction to use those functions.)

User is not introduced to C++ way of doing things. (User is asked to handle things as in C, like dynamic arrays instead of vectors.)

The user interface issue is a big on alone -- it is a notoriously difficult thing to have a TUI: you must present information, get input properly (something always untaught/taught wrong to C++ neophytes), validate input and recover from errors, format output properly...

Anyway, I'd be unhappy too.
CS/CE 1337

Well that just says it all about their attitude, doesn't it?

-Albatross
Project 5: https://drive.google.com/file/d/0B6gYqBQuTG-9TG1RR1ZPOG9Tb09QLWdWTWpWRi1HOGZTc3Qw/view?usp=sharing

I have tried to help him through setting up the classes, and the way they are described makes no sense, leaving us to make guesses as to what was actually meant. We're scared to deviate too much because of the grading process.

To top things off, check out this screenshot with more details on the project:
https://drive.google.com/file/d/0B6gYqBQuTG-9N0JobjVvb2liVU0/view?usp=sharing

For reference, if this project didn't have insane requirements, I could probably do it in half an hour. It's very similar to a typical contest problem for novice division of programming contests I've been to. The vagueness and nonsensical requirements however have left us scratching our heads for weeks, and asking the professor questions has resulted in responses that only cause more confusion.

I am trying to convince my friend to go to the dean.

EDIT: Sample input file:
3 S bandages 75.0
3 S scalpels 110.75
3L wheelchairs 535.74   -
4 S bananas 300.0
4 L apples 739.23
4 m cows 329.14
4 l cheese 298.2
4 s energon 427.8
4 S paper 325.0
A M stuff 1.1           -
5 Z swords 524.79       -
6 s steel $297.99       -
The dashes are not part of the file - they are the lines of input that should be silently ignored.
Last edited on
I just puked a little in my mouth. For starters I think they'd actually benefit from just teaching straight C instead of teaching C (poorly) under the label C++.
I do not think I will ever unsee what Albatross pointed out.

CS/CE 1337
Well that just says it all about their attitude, doesn't it?

-Albatross

Somebody care to explain to a nubs?

And I completely agree that this course sounds awful
My old university's comp sci program was pretty bad too. Mostly because no one in the department communicated with each other, so no one knew what was taught in the prerequisite class to theirs, or even a lateral class. To top it off I had a professor who I could always tell when her student aid graded a test because I didn't have to pull up a compiler and show her why she was wrong to mark me off. Also she didn't know what a linked-list was. Head of the department came into class one day, asked if we'd covered those yet, she had no idea what he was talking about. Though that may be language barrier, she didn't speak very good english. She was from, and got her degree in, China.
Topic archived. No new replies allowed.