• Taking a community college CIS/C++ course

    From Digital Man@VERT to All on Tue Jan 16 16:51:13 2024
    I'm thinking of making a video series on programming in C and then later maybe C++. I've been reading a lot of (mostly C++) programming books in preparation for this project.

    My first video series will probably be a deconstruction/analysis of the 2nd edition of the K&R book (though yes, that's a really old version of C now).

    I also thought it'd be good to take some refresher college courses on C++ to see how it's taught nowadays, the books used, etc. Luckily, my local community college had an online winter course and I signed up and started a couple of weeks ago.

    Now, I've been programming in C and C++ professionally since 1991, so I didn't really expect to learn a lot whole lot in the introductory course (CIS-5), but here's some initial takeaways:

    1. The recommended (not required) book is pretty outdated and, in my opinion, bad compared to all other C++ programming books I've owned (explains concepts in an odd order, gets things wrong). And it's *way* overpriced.
    https://www.amazon.com/crappy_book/dp/013454484
    so I'm just using a pirated PDF copy of it. Bleh.

    2. The online labs/course work (in something called "Canvas") is hodge-podge, contradictory and just kind of a mess of video "labs" (more demos, with very low audio levels), bad copy/pasted UNICODE-translated (so, not compilable) source code, and links to another college professor's videos on YouTube that are pretty old and average:
    https://www.youtube.com/@deborahs948

    3. This professor seems to have internalized some incorrect idioms they repeat over and over (e.g. you #include a libarary in C++, "cout" stands for "console output", confuses declarations and definitions, etc.), has no concept of UNICODE, never bothers to explain *why* the preprocessor and C++ language are they way they are, depends on the IDE's editor to detect errors/warnings in the code (rather than the compiler), has no concept of the command-line, command-line options (e.g. for the builds tools), how to use Windows effectively (forget about MacOS, Linux, or ChromeOS). It's pretty frustrating watching/listening to them write code and explain concepts.

    More than once, I've thought "aha! that's where these candidates that don't do well in our interview process got that wrong-concept from!". There's some fundamental stuff that's just not being taught correclty in some schools apparently.

    So far, it's all console input (using std::cin) and output (using std::cout), basic math, algorithms, and now looping constructs. There's been a lot of focus on stream formatting (using of <iomanip>) which in my experience is not something used much in most C++ projects, but whatever. I am learning *some* things there that I hadn't used before. But I have to keep reminding myself: I'm not here to teach this class (or the professor) or even to get the highest score ever, just to learn what's good and bad about how C++ is being taught in schools these days. And towards that goal, it's going good!
    --
    digital man (rob)

    This Is Spinal Tap quote #22:
    David St. Hubbins: Here lies David St. Hubbins... and why not?
    Norco, CA WX: 63.3F, 59.0% humidity, 3 mph W wind, 0.00 inches rain/24hrs
    ---
    Synchronet Vertrauen Home of Synchronet [vert/cvs/bbs].synchro.net
  • From Nightfox@VERT/DIGDIST to Digital Man on Tue Jan 16 17:53:13 2024
    Re: Taking a community college CIS/C++ course
    By: Digital Man to All on Tue Jan 16 2024 04:51 pm

    1. The recommended (not required) book is pretty outdated and, in my opinion, bad compared to all other C++ programming books I've owned (explains concepts in an odd order, gets things wrong). And it's *way* overpriced.
    https://www.amazon.com/crappy_book/dp/013454484 so I'm just using a pirated PDF copy of it. Bleh.

    C++ was taught in the software engineering program I did in college (which I started into in 2001). I had taken a couple of C++ classes from the CS department prior to the software engineering program, so I had a bit of a foundation already, and I still learned quite a bit. Sometimes I wondered why they chose the books they chose. I remember the initial book for the C++ classes seeming a bit complicated, at least compared to the book used by the CS teachers.

    2. The online labs/course work (in something called "Canvas") is hodge-podge, contradictory and just kind of a mess of video "labs" (more demos, with very low audio levels), bad copy/pasted UNICODE-translated (so, not compilable) source code

    Interesting.. Canvas sort of rings a bell, though I'm not sure if I've used it. My instructors in college just had us do our work in Visual Studio.

    3. This professor seems to have internalized some incorrect idioms they repeat over and over (e.g. you #include a libarary in C++, "cout" stands for "console output", confuses declarations and definitions, etc.), has no concept of UNICODE, never bothers to explain *why* the preprocessor and C++ language are they way they are, depends on the IDE's editor to detect errors/warnings in the code (rather than the compiler), has no concept of the command-line, command-line options (e.g. for the builds tools), how to use Windows effectively (forget about MacOS, Linux, or ChromeOS). It's pretty frustrating watching/listening to them write code and explain concepts.

    That definitely can be frustrating..
    One time in college (before I took any CS or software engineering classes), I was thinking of going into CIS (Computer Information Systems) and was taking one of the required classes (around 2000), and one day the instructor said any animations on a web page are typically done with Java. I remember him talking about it fairly generically, and I had a thought that a lot of the animations I saw on web pages at the time were just animated .gif images.

    In one of my C++ classes for the software engineering program, for cin and cout, one of the students in the class would often read those as "carry in" and "carry out"..

    More than once, I've thought "aha! that's where these candidates that don't do well in our interview process got that wrong-concept from!". There's some fundamental stuff that's just not being taught correclty in some schools apparently.

    One time in my career, I was surprised to learn of something I didn't know, which apparently was not mentioned in my classes in college: That it's unsafe to do GUI-related things from anything other than the main thread. Either that wasn't mentioned in any of my classes, or somehow I missed it. I did have a couple of classes in college pertaining to making a GUI (one in MFC with C++, and another with WinForms using C#).

    Also, I had a software engineer job interview once with a company that asked me to provide a code sample. I did (it was something I had written in C++). They were asking me some questions about it, and mentioned something about some of the logic in one of the functions possibly being refactored, and they had mentioned some obscure math theorem that I had never heard of..

    Nightfox

    ---
    Synchronet Digital Distortion: digitaldistortionbbs.com
  • From fusion@VERT/CFBBS to Digital Man on Tue Jan 16 22:22:00 2024
    On 16 Jan 2024, Digital Man said the following...

    I'm thinking of making a video series on programming in C and then later maybe C++. I've been reading a lot of (mostly C++) programming books in preparation for this project.
    My first video series will probably be a deconstruction/analysis of the 2nd edition of the K&R book (though yes, that's a really old version of
    C now).

    this is very cool, and i'm looking forward to it!

    i do enjoy reading my copy of the K&R book.. nostalgic.

    good luck!

    --- Mystic BBS v1.12 A47 2021/12/25 (Windows/32)
    * Origin: cold fusion - cfbbs.net - grand rapids, mi
  • From fusion@VERT/CFBBS to Nightfox on Tue Jan 16 22:52:00 2024
    On 16 Jan 2024, Nightfox said the following...

    Sometimes I wondered why they chose the books they chose. I remember the initial book for the C++ classes seeming a bit complicated, at least compared to the book used by the CS teachers.

    i threw mine away.. it was one of those weird super thick programming books where the whole second half is just printouts of man pages. i also don't remember the example programs being particularly useful.

    --- Mystic BBS v1.12 A47 2021/12/25 (Windows/32)
    * Origin: cold fusion - cfbbs.net - grand rapids, mi
  • From Gamgee@VERT/PALANTIR to Digital Man on Wed Jan 17 07:38:00 2024
    Digital Man wrote to All <=-

    I'm thinking of making a video series on programming in C and
    then later maybe C++. I've been reading a lot of (mostly C++)
    programming books in preparation for this project.

    <SNIP>

    I would be VERY interested in following this! Sure hope you're able to
    do it, and thanks!



    ... Internal Error: The system has been taken over by sheep at line 19960
    --- MultiMail/Linux v0.52
    Synchronet Palantir BBS * palantirbbs.ddns.net * Pensacola, FL
  • From Digital Man@VERT to Nightfox on Wed Jan 17 09:49:12 2024
    Re: Taking a community college CIS/C++ course
    By: Nightfox to Digital Man on Tue Jan 16 2024 05:53 pm

    2. The online labs/course work (in something called "Canvas") is hodge-podge, contradictory and just kind of a mess of video "labs" (more demos, with very low audio levels), bad copy/pasted UNICODE-translated (so, not compilable) source code

    Interesting.. Canvas sort of rings a bell, though I'm not sure if I've used it. My instructors in college just had us do our work in Visual Studio.

    The student is expected to edit, build, run their code in either Visual Studio/Visual C++ or XCode. "Canvas" is just the web app they use for organizing and delivering the assignments and accepting submissions. I think Canvas software is fine, but the professor hasn't done a lot of quality-control of the content. It's all over the place, includes old or repeated content and gives contradictory guidance (e.g. lab/assignment numbering). But it's a community college, so I don't think there's a lot of peer review (of the professor's content) going on.
    --
    digital man (rob)

    Synchronet/BBS Terminology Definition #36:
    FTS = FidoNet Technical Standard
    Norco, CA WX: 50.7F, 95.0% humidity, 0 mph W wind, 0.00 inches rain/24hrs
    ---
    Synchronet Vertrauen Home of Synchronet [vert/cvs/bbs].synchro.net
  • From Digital Man@VERT to Nightfox on Wed Jan 17 09:51:21 2024
    Re: Taking a community college CIS/C++ course
    By: Nightfox to Digital Man on Tue Jan 16 2024 05:53 pm

    One time in my career, I was surprised to learn of something I didn't know, which apparently was not mentioned in my classes in college: That it's unsafe to do GUI-related things from anything other than the main thread. Either that wasn't mentioned in any of my classes, or somehow I missed it.
    I did have a couple of classes in college pertaining to making a GUI (one in MFC with C++, and another with WinForms using C#).

    That depends on the GUI framework. Borland VCL provides mechanisms that can be used to safely update GUI components ("controls" they call them) from child threads. I've done similar stuff in MFC apps, so it's doable if necessary.
    --
    digital man (rob)

    Rush quote #75:
    Though his mind is not for rent, don't put him down as arrogant .. Tom Sawyer Norco, CA WX: 50.7F, 95.0% humidity, 0 mph W wind, 0.00 inches rain/24hrs
    ---
    Synchronet Vertrauen Home of Synchronet [vert/cvs/bbs].synchro.net
  • From Dumas Walker@VERT/CAPCITY2 to DIGITAL MAN on Wed Jan 17 09:42:00 2024
    So far, it's all console input (using std::cin) and output (using std::cout), sic math, algorithms, and now looping constructs. There's been a lot of focus
    stream formatting (using of <iomanip>) which in my experience is not somethin
    used much in most C++ projects, but whatever. I am learning *some* things ther
    that I hadn't used before. But I have to keep reminding myself: I'm not here t
    teach this class (or the professor) or even to get the highest score ever, jus
    to learn what's good and bad about how C++ is being taught in schools these da
    . And towards that goal, it's going good!

    Sounds like the prof maybe needs to take a lesson from you and take a
    refresher course. ;)


    * SLMR 2.1a * If it's Tourist Season, howcum we can't shoot 'em, Pa?

    ---
    Synchronet CAPCITY2 * capcity2.synchro.net * Telnet/SSH:2022/Rlogin/HTTP
  • From Arelor@VERT/PALANTIR to Digital Man on Wed Jan 17 13:23:48 2024
    Re: Taking a community college CIS/C++ course
    By: Digital Man to All on Tue Jan 16 2024 04:51 pm



    More than once, I've thought "aha! that's where these candidates that don't Now you know why so many people feel betrayed after getting their degree and
    trying to get into the employment market. Half of what they have been taught was full of shit and the other half is outdated. If anybody exits college with useful knowledge, it is because their did their own research.

    --
    gopher://gopher.richardfalken.com/1/richardfalken

    ---
    Synchronet Palantir BBS * palantirbbs.ddns.net * Pensacola, FL
  • From Digital Man@VERT to Dumas Walker on Wed Jan 17 12:17:40 2024
    Re: Taking a community colleg
    By: Dumas Walker to DIGITAL MAN on Wed Jan 17 2024 09:42 am

    Sounds like the prof maybe needs to take a lesson from you and take a refresher course. ;)

    :-)
    --
    digital man (rob)

    Synchronet/BBS Terminology Definition #69:
    SEXPOTS = Synchronet External Plain Old Telephone System (POTS) service
    Norco, CA WX: 56.2F, 80.0% humidity, 2 mph WSW wind, 0.00 inches rain/24hrs ---
    Synchronet Vertrauen Home of Synchronet [vert/cvs/bbs].synchro.net
  • From Digital Man@VERT to Arelor on Wed Jan 17 12:25:23 2024
    Re: Taking a community college CIS/C++ course
    By: Arelor to Digital Man on Wed Jan 17 2024 01:23 pm

    Now you know why so many people feel betrayed after getting their
    degree and trying to get into the employment market. Half of what they have > been taught
    was full of shit and the other half is outdated. If anybody exits college with useful knowledge, it is because their did their own research.

    Likely, but I also think the school/professor selection is a critical variable here. I've hired some great new grads and interns from universities with good engineering reputations that have demonstrated a solid comp-sci foundation. I can't afford to try every school's programming curriculum, but I'm definitely curious and plan to do some more research on this topic.

    I plan to take the follow-up C++ courses (at minimum) at this same community college and will hopefully get a better sense of what the other professors have to offer. I hope it gets better, but either way, it's been fun so far.
    --
    digital man (rob)

    Synchronet "Real Fact" #122:
    Synchronet v2.30a (DOS & OS/2) was released on 5-30-97, 20 months after v2.20b Norco, CA WX: 56.2F, 80.0% humidity, 2 mph WSW wind, 0.00 inches rain/24hrs ---
    Synchronet Vertrauen Home of Synchronet [vert/cvs/bbs].synchro.net
  • From Nopants@VERT/CITBBS to Digital Man on Wed Jan 17 10:22:00 2024
    Re: Taking a community colleg
    By: Digital Man to All on Tue Jan 16 2024 04:51 pm

    I'm thinking of making a video series on programming in C

    I'd be interested to know what fields or modern applications there are for C these days (besides vehicle automation apparently :)).

    Have you checked out Dave's Garage? He's done some programming youtubes, so may give you some ideas on how to keep the interest level up. https://www.youtube.com/watch?v=b0zxIfJJLAY&t=430s

    Interested to hear how this progresses.



    ---
    Synchronet The Crack in Time BBS - crackintimebbs.ddns.net:2323
  • From Digital Man@VERT to Nopants on Wed Jan 17 13:38:37 2024
    Re: Taking a community colleg
    By: Nopants to Digital Man on Wed Jan 17 2024 10:22 am

    Re: Taking a community colleg
    By: Digital Man to All on Tue Jan 16 2024 04:51 pm

    I'm thinking of making a video series on programming in C

    I'd be interested to know what fields or modern applications there are for C these days (besides vehicle automation apparently :)).

    Most Linux (kernel and driver) work is in C. Android (and several other embedded OSes) run on the Linux kernel.

    Have you checked out Dave's Garage? He's done some programming youtubes, so may give you some ideas on how to keep the interest level up. https://www.youtube.com/watch?v=b0zxIfJJLAY&t=430s

    Oh yeah. Read his book too (which was a bit of an epiphany for me and my family). Dave's great.

    Interested to hear how this progresses.

    Will keep everyone here abreast of my progress.
    --
    digital man (rob)

    Synchronet "Real Fact" #16:
    Synchronet first supported FidoNet networking (with SBBSFIDO) in 1992
    Norco, CA WX: 59.8F, 68.0% humidity, 4 mph WSW wind, 0.00 inches rain/24hrs ---
    Synchronet Vertrauen Home of Synchronet [vert/cvs/bbs].synchro.net
  • From Digital Man@VERT to Nopants on Wed Jan 17 14:40:41 2024
    Re: Taking a community colleg
    By: Digital Man to Nopants on Wed Jan 17 2024 01:38 pm

    I'd be interested to know what fields or modern applications there are for C these days (besides vehicle automation apparently :)).

    Most Linux (kernel and driver) work is in C. Android (and several other embedded OSes) run on the Linux kernel.

    All Apple products (e.g. iOS devices, watches, etc.) have a significant amount of compiled C code in them too.

    Oh yeah, and you know all the smart bulbs, switches, thermostats, doorlocks, appliances, etc. in your house? They're most definitely running some code (there most critical coe) that is written/maintained in C.
    --
    digital man (rob)

    Synchronet/BBS Terminology Definition #89:
    XJS = External JavaScript (SSJS embedded within HTML/CSS)
    Norco, CA WX: 60.4F, 67.0% humidity, 6 mph WNW wind, 0.00 inches rain/24hrs ---
    Synchronet Vertrauen Home of Synchronet [vert/cvs/bbs].synchro.net
  • From Keyop@VERT/MAGNUMUK to Digital Man on Wed Jan 17 22:23:37 2024
    Re: Taking a community college CIS/C++ course
    By: Digital Man to All on Tue Jan 16 2024 16:51:13

    I'm thinking of making a video series on programming in C and then later maybe C++. I've been reading a lot of (mostly C++) programming books in preparation for this project.

    Oh that sounds great - I will definately be watching those when you publish them!

    My first video series will probably be a deconstruction/analysis of the 2nd edition of the K&R book (though yes, that's a really old version of C now).

    I learned how to program in C using a book titled "The C programming tutor" by Wortman and Sidebottom, which I recently re-purchased as I have misplaced my original copy.

    https://archive.org/details/cprogrammingtuto0000womm/mode/2up

    I watched a few introduction videos regarding C++ when it first came out, but never pursued it any further. I'm hoping your videos will rekindle my interest :)

    ---
    Synchronet >>> Magnum BBS <<< - bbs.magnum.uk.net
  • From fusion@VERT/CFBBS to Digital Man on Wed Jan 17 21:09:00 2024
    On 17 Jan 2024, Digital Man said the following...

    I plan to take the follow-up C++ courses (at minimum) at this same community college and will hopefully get a better sense of what the
    other professors have to offer. I hope it gets better, but either way, it's been fun so far. --

    what do you do for homework, interactions in class, etc? are you pretending to be a noob or do they know what you're up to?

    --- Mystic BBS v1.12 A47 2021/12/25 (Windows/32)
    * Origin: cold fusion - cfbbs.net - grand rapids, mi
  • From Digital Man@VERT to fusion on Wed Jan 17 18:19:08 2024
    Re: Re: Taking a community college CIS/C++ course
    By: fusion to Digital Man on Wed Jan 17 2024 09:09 pm

    On 17 Jan 2024, Digital Man said the following...

    I plan to take the follow-up C++ courses (at minimum) at this same community college and will hopefully get a better sense of what the other professors have to offer. I hope it gets better, but either way, it's been fun so far. --

    what do you do for homework, interactions in class, etc? are you pretending to be a noob or do they know what you're up to?

    It's an online course with about 40 students. I was honest about my background and reasons for taking the class. I'm not the only experienced programmer in the class (at least one other is a very experienced Java developer).

    The course work mostly is watching videos, reading chapters from the book (not really necessary), reading articles and discussing on a web-board or reading descriptions of assignments and then writing and submitting the source code that completes the assignment. It's a 6 week course, so it's pretty dense. 2 week in and I think I've submitted something like 15 assignments already (but very easy programming tasks for experienced C or C++ programmer, the time consuming part is just making sure that every trivial detail in the assignment description is addressed in the submitted code).

    I created a Discord server for the class and have been tutoring students there when I have time too.
    --
    digital man (rob)

    Synchronet/BBS Terminology Definition #31:
    FOSSIL = Fido/Opus/SEAdog Standard Interface Layer
    Norco, CA WX: 54.6F, 80.0% humidity, 1 mph WNW wind, 0.00 inches rain/24hrs ---
    Synchronet Vertrauen Home of Synchronet [vert/cvs/bbs].synchro.net
  • From poindexter FORTRAN@VERT/REALITY to fusion on Thu Jan 18 06:34:00 2024
    fusion wrote to Digital Man <=-

    i do enjoy reading my copy of the K&R book.. nostalgic.

    I bought another copy of K&R C, keep telling myself I'm going to load up
    a retro compiler and learn C again...


    ... What mistakes did you make last time?
    --- MultiMail/Win v0.52
    Synchronet .: realitycheckbbs.org :: scientia potentia est :.
  • From poindexter FORTRAN@VERT/REALITY to Digital Man on Thu Jan 18 06:37:00 2024
    Digital Man wrote to Nopants <=-

    Most Linux (kernel and driver) work is in C. Android (and several other embedded OSes) run on the Linux kernel.

    Walking through the MINIX code is an interesting lesson. It's designed
    as an educational OS, the code is pretty vanilla C, and it's easy to
    read. I'd run a little web site on it just because I could a couple of
    jobs ago. It made for a fun experiment, having a web site running on a
    286.




    ... What is the simplest solution?
    --- MultiMail/Win v0.52
    Synchronet .: realitycheckbbs.org :: scientia potentia est :.
  • From poindexter FORTRAN@VERT/REALITY to Digital Man on Thu Jan 18 06:39:00 2024
    Digital Man wrote to fusion <=-

    I created a Discord server for the class and have been tutoring
    students there when I have time too.

    I tutored a FORTRAN class with a particularly bad professor. Friends of
    mine would hang out after the class and I'd go over what he'd taught.

    And, thus, a handle was born. :)





    ... What is the simplest solution?
    --- MultiMail/Win v0.52
    Synchronet .: realitycheckbbs.org :: scientia potentia est :.
  • From Nopants@VERT/CITBBS to Digital Man on Sat Jan 20 09:36:00 2024
    Re: Taking a community colleg
    By: Digital Man to Nopants on Wed Jan 17 2024 02:40 pm

    Oh yeah, and you know all the smart bulbs, switches, thermostats, doorlocks, appliances, etc. in your house? They're most definitely running some code (there most critical coe) that is written/maintained in C.

    I didn't realize that the ESP32 devices I messed with a few years ago was C++. That was a fun way to learn. I need to get back into that. The stuff I built so far 'just works' so I haven't touched it again. I guess that explains why it is used for these embedded devices.

    Will C++ knowledge translate to C?

    ---
    Synchronet The Crack in Time BBS - crackintimebbs.ddns.net:2323
  • From Digital Man@VERT to Nopants on Sat Jan 20 13:53:44 2024
    Re: Taking a community colleg
    By: Nopants to Digital Man on Sat Jan 20 2024 09:36 am

    Will C++ knowledge translate to C?

    Yeah, C is roughly a subset of C++. The languages have diverged and re-converged a bit over the years (and versions of their standards), but yeah, almost any experienced C++ programmer can program in C, though they often groan about it. :-)
    --
    digital man (rob)

    This Is Spinal Tap quote #24:
    David St. Hubbins: You're a haughty one, saucy Jack.
    Norco, CA WX: 51.4F, 91.0% humidity, 0 mph WSW wind, 0.29 inches rain/24hrs ---
    Synchronet Vertrauen Home of Synchronet [vert/cvs/bbs].synchro.net
  • From nelgin to Digital Man on Mon Jan 22 13:42:52 2024
    Re: Taking a community colleg
    By: Digital Man to Nopants on Sat Jan 20 2024 13:53:44

    Yeah, C is roughly a subset of C++. The languages have diverged and re-converged a bit over the years (and versions of their standards), but yeah, almost any experienced C++ programmer can program in C, though they often groan about it. :-)

    I think the thing that put me off learning C is the 1001 different compile options for gcc. If you're going to be working on more portable open source projects then there's a whole subset of stuff you problem need to know like the autoconf tools and the like.

    The code will run faster but I'm happy just to rip off a bit of perl and be done with it. no compilation, no makes files.
  • From The Lizard Master@VERT/NITEEYES to Digital Man on Fri Jan 26 10:59:41 2024
    Re: Re: Taking a community college CIS/C++ course
    By: Digital Man to fusion on Wed Jan 17 2024 06:19 pm

    I created a Discord server for the class and have been tutoring students there when I have time too.

    That's great of you!

    ---
    Synchronet This is my tagline so I don't get any complaints when I post