2017-2018 Academic Year Report
Instruction
Teaching continues to be a great source of inspiration for me. I am constantly exploring new ways to suss out a concept, or encourage understanding (despite resistance to the contrary). And it is one of those gifts that keeps giving: to encounter, again and again, each new mind where I have been able to influence some increased comprehension and even cognition, clearing away ignorance and confusion, really motivates me and energizes me to keep going.
Overview
In recent years, I would recall each semester as simultaneously the best and worst I'd ever experienced. There would be an ever-widening chasm between the good students and the terrible ones, with no signs of such trends letting up.
For the first time in a long while, and I'm not sure what really brought it on, I've actually started feeling a general sense of the semesters being far more enjoyable and productive than detrimental.
To be sure, the terrible students are still challenging my perceptions of basic requirements of college eligibility and even basic human sentience, but somehow their embrace of mediocrity and ignorance isn't impacting me as acutely as it has in semesters' past.
The bad
Describing the terrible students is, once again, predominantly NOT behavioral, but chronic and acute deficiencies in aptitude, discipline, and overall cognition. Last year I lamented on their shaky foundations when it comes to basic writing skills, computer literacy, file management, mathematical reasoning, reading comprehension, and time management. Those same issues persist, and I've got some new ones to add onto the list:
issues with language fluency: students increasingly do not appear to have a strong grasp on the english language. This makes communicating somewhat challenging. From temporal insensitivities to using the word “just” in a sentence to full out not knowing a number of words to a lack of awareness to cultural colloquialisms:
basic conversational skills: many students are unable to communicate in any sort of detail or eloquence. Some don't feel shy to speak up: they simply don't know how to communicate.
inadequate vocabulary: they increasingly suffer from a lack of vocabulary. I will get beleaguered with “what does that word mean?” with increasingly surprising word candidates: tenet, obfuscate, obscurity, subjective/objective, transaction. I have even had to go over how one goes about looking up familiar words (even electronically, where they can use their fancy phones to do so!). Needless to say, my attempts do not appear to have been heeded. Many just ignore everything if they don't understand even a single word, no questions asked, no nothing.
unfamiliarity with colloquialisms: “get your foot in the door”, “I need a guinea pig” are but two examples. I am finding I have to routinely break down my words and simplify how I say things in order to get my point across. Even to the good students.
unfamiliarity with examples: perhaps not surprising, yet maybe a bit more sudden than I was expecting. They don't know what a “land line” is, so all the serial communication concepts are lost on them. The smart phone way of doing things seems to be quickly eclipsing the previous ways, and this causes problems for them in the learning process.
information processing/bandwidth: perhaps a consequence of this interconnected smart phone reality, too many have grown so acclimated to 'instant gratification' and getting ushered to whatever information they think they need, that their ability to juggle larger quantities of information has been significantly compromised. Some are unable hold attention reading through a couple paragraphs. Give them a chapter in a book, or a set of informative web pages to read, and they simply cannot cope with such a task. Quite sad, considering this is a core responsibility of being a denizen of a computing discipline.
basic concepts of a file: smartphones obfuscate notions of data structure and file organization from the end user. Yet, ANY developer needs familiarity with files and paths. To be sure, I've been shocked at how quickly the average student does not comprehend the nature of a file. What were previously basic to the point of pointless exercises in class are quickly becoming challenging and advanced topics, and I've had to react accordingly.
listening comprehension: there's a rash of inability to listen and productively react to what I am saying in class. They seem unable to connect theory with practice: if they don't immediately see the relevance, they'll ignore it, only to complain they've never encountered the concept before when an assignment comes along taking them to task on it. I've actually had the perverse pleasure of pointing these very students to their own electronic notes they took in class on a given day, proving that they HAD, in fact, encountered such topics before (but again, if they're just acting as mindless automatons and not thinking about the stuff, it becomes no more familiar).
brute-forcing mentality: too many seem to think education is all about memorizing and regurgitating. Or trying every possibly conceivable combination, divorced from reasoning. They are wanting to BE computers, versus being people who instruct computers. I once again blame smart phones for 'training' them in this way.
locked into short-term perceptions: the 'immediate gratification' atmosphere encouraged by their everyday environment has students increasingly locked into seeing tangible things only in the here and now. This sabotages their ability to predict or contemplate future possibilities, especially if they are of a less direct or intangible nature. This can be a problem for effective problem solving (and again, another 'basic skill' that has morphed into a new and challenging skill).
Like reading, writing, and basic numerical reasoning, many of these deficiencies are skills that require time to develop fluency, and students have historically had prior exposure to many of these concepts. That no longer seems to be the case. I now have to be the one introducing them to basic file concepts, giving them a primer on english vocabulary, AND giving them their first exposure to abstraction. And still build on top of them to proceed with the course at hand. I am certainly game for a challenge, but I feel sorry for these students, deprived of so many basic aspects of modern basic education, and it impacts their abilities, and of even expressing their humanity.
The good
Still, I maintain hope and inspiration in seeing what the good students are capable of achieving:
taking after my example, or taking my advice, and running with it: I show them basic information design ideas and encourage regular documentation, and they start to perform the practice, realize how valuable it is to document their progress.
even if unfamiliar with certain technologies, the students who take the time and effort to use them, even for other purposes, has consistently enhanced their comprehension and overall success in the class.
asking various questions that aren't directly related to class material, but more around the edge; this shows a deeper thought and exploration of the concepts.
some excellent time management skills. Students who immediately start and set to work on a project once it is released, with regular questions being asked, often having the task completed (and deeper understanding gained) with a considerable amount of time remaining until the actual due date.
community: my room often becomes a student life activity of sorts. Students will flock to my room around their main classes to spend time working on their projects and interact with other students in the program. It has been quite a rewarding experience.
creativity / thinking outside the box: my classes tend to be a first opportunity to truly start problem solving and thinking outside the box. For many, their prior educational experiences have not been encouraging of such activities, so my classes tend to give them an environment to start actively and critically thinking, and even more importantly: exploring and playing.
specifics
Some course-specific points related to instruction:
In general:
further integration into my data collection and reporting infrastructure. This allowed for convenient class-wide analysis of metrics, as well as per-student access to their data to view course progress. This continues to be a regular work in progress, and such a delightfully large problem where I can focus on different aspects as interest permits.
all syllabi for courses taught in a given semester see updating (they are generated from templates integrated into my content management system, so any changes made tends to impact everything).
more quantitative/rubrick-oriented data points, especially related to assignment evaluation, which is tying nicely into my course assessment efforts.
with the CS program review this year, I have made tangible progress on the course assessment-specific domain of things. Incorporating ILOs, PLOs, CLOs, and making the necessary connections between all relevant data points (and reporting on those connections, as well as available data).
reporting and visualization: I was able to make some further inroads in performing automated and custom visualizations of collected data, which I have been integrating into many existing reporting resources (especially resources shared with each class).
CSCS1320: C/C++ Programming
further refining and optimization of projects to dovetail into follow-up courses
updating of material to reflect changes in student capabilities
various anti-cheating strategies employed (ie making projects “un-google-able” for those seeking to just copy and paste answers without thinking).
my projects tend to be this way by default, but the longer I run with a theme, the more information about it tends to be recorded/discovered (ie strictly range-based prime number trial-by-division algorithms)
I frequently locate existing code samples on the internet, look for implementation patterns, and alter my project specifications so as to require students to conceptually understand the concept (they can still reference the on-line examples, but they will not be as useful to them barring a viable understanding, which is as it should be).
so many seem to come in with pre-conceived notions of what the class should be about. As I cover the basics, they realize how “mathematical” and “logical” these computer things are. For those who want to “do video games”, this is an eye-opening, if not sobering experience for them.
CSCS1730: UNIX/Linux Fundamentals
UNIX continues to be “the best class they've ever taken”. Where they may be struggling or confused by concepts in other classes, UNIX often solidifies and clarifies things for them, allowing them to succeed not just in my class, but in their other classes. It doesn't happen immediately, but as the semester drags on, more and more come to the realization of how profound and valuable the course is for them.
I've had specific requests for MORE of a certain theme of projects, which I call “puzzle boxes”, which require a sort of creative problem solving and applying of skills in order to solve.
CSCS2330 Discrete Structures
some great longer-term exploration of concepts under various themes, including:
activities requiring basic logic (bitwise ANDing/ORing) continue to be a challenge. A lot of attention is then spent on covering and exposing students to these important concepts, but resistance remains strong (they'll still try to avoid it when they can, even reverting to longer math algorithms just to avoid short and concise logical solutions).
I placed specific restrictions on how they could NOT go about solving problems, to enable them to explore other paths to solution.
I gave weekly logic puzzles (logic grids, word math, sudokus), which were largely met with disdain and loathing, but those who hunkered down and worked through them saw the following benefits:
they developed better critical thinking and reasoning skills
they ceased being “the first solution that comes to mind is my solution”-type implementors. They would increasingly evaluate their solutions and pursue other ones if the current one was deemed inadequate.
their indirect reasoning skills improved dramatically (the realization of secondary and tertiary details, or “side effects”, as a result of performing some primary action).
some even grew to enjoy the puzzles, and starting picking them up as an extra-curricular recreational habit.
Future considerations:
I am tempted to roll out some iteration of the weekly puzzles into my other classes. They work particularly well in Discrete, but are certainly applicable everywhere.
I am exploring other numeric manipulation problems as potential project themes, to move away from an increasingly familiar “prime number computation” theme (good and important, but many examples abound on the internet).
abundant, perfect, weird, and deficient numbers (greek numerology) is increasingly looking like an excellent multi-concept umbrella for Discrete.
instead of prime numbers, tweaking the specification a little bit. What about numbers that have exactly TWO sets of factor pairs (one and itself, plus another– this would include some squares, and require some specific algorithmic considerations). I am calling them “secondary numbers”, and this would end up being a viable theme to explore in both CSCS1320 and CSCS2330 (at the very least).
data visualization. I continually toy with this idea, implementing it here and there. I'd love to work it in as more of a base-level topic.
more “multi-solution” projects. Require not one solution, but (at least) two. I've dabbled in this in various classes with great success, and a wider deployment seems in order.
Advising
Due to the comfortable atmosphere of the room and interacting with students, many would come to me with concerns related to challenges in other classes. This has led to some early interventions, including dropping of classes to ensure success, changing programs to align with better identified student interests, etc.
I’ve instilled a desire that “earlier is better than later” with respect to signing up for classes. I was getting questions about fall courses 1-2 weeks before registration even started.
With registration underway, many an advising experience began with “are you free any time today?” to which the timing was right, enabling me to say “how about right now?”. So many of my advising experiences came about this way.
I presented at both the Fall 2017 and Spring 2018 CCC Open House events.
Professional Development
I attended the 2018 GREAT Day at SUNY Geneseo
attended a talk on the history of mathematics
viewed a poster involving the mathematical simulation and visualization of a pendulum
among many others, sampled some posters/student projects on topics ranging from Discrete Structures to Financial Algorithm Modelling to Soundscape analysis. All in all, a very enlightening day, refueling many Computer Science interdisciplinary insights and giving me some new project ideas and concept presentation strategies/themes.
continued to polish my suite of command-line math operation tools (pipemath), which was directly utilized in a project by students (making them go through the entire software build process– download, read instructions, compile, install, use).
enhanced my suite of measurement unit conversion tools (unittools), which was also directly utilized in a project by students (similar software lifecycle process encountered). Additionally, it offered some students an opportunity to further bridge both their CSCS1320 and CSCS1730 classes together, seeing how the two classes and concepts covered therein were not two isolated entities.
constructed, configured, and deployed two 4-node raspberry pi computer clusters, for use in both my UNIX and Systems Programming classes.
exploring patterns of factor pairs of numbers (prime, secondary, tertiary, etc.) and potential visualizations therein. My efforts so far are already hatching ideas for future CSCS1320 and CSCS2330 projects (at least), with areas spanning from output specification, algorithm implementation, algorithm optimization, and visualization.
My “French relearning” efforts seem to have focused predominantly on listening and listening comprehension; I have specifically sought out French media (music, films) to aid me in this approach. Other general reading and writing efforts still persist, but seemingly less so compared to a recent preference to focus on audible pronunciation and other sound patterns present in spoken language.
updated core server infrastructure (fall2017). Due to aging hardware and increased likelihood of eventual device failures (including an actual router failure), I completely recreated the server infrastructure leading up to the October break (to enable a clean switch-over, then continued to polish and implemented added functionality)
Maintaining the student workstations, addressing the contemporary security issues of the day, and incorporating new functionality (much of it requested by top-tier students seeking added resources for exploring course concepts).
My development efforts, along with preparing new/updated projects, has had me revisit and become more acclimated with various development tools, including: Makefiles, version control/repositories.
Service
Attended 2018 Computer & Information Science Advisory Board meeting
Maintain Lab46, the public UNIX shell box that Computer Science and IT students utilize for much of their coursework and explorations (now celebrating its 19th year in existence)
Maintain R108, the Computer Science/IT lab (aka “the LAIR”). This includes student workstations, project machines, servers, and network infrastructure.
As stated above, various security vulnerabilities required some priority maintenance to ensure secure and continued operations.
The main router, in service for over 10 years, finally gave up the ghost with its drive finally failing (around October breakweek in the fall semester). A true testament to a well-configured machine, able to serve its purpose and doing so admirably.
Setting up a new router and all its related services (firewall, routing, DHCP,
DNS).
The classroom workstations (pods) were upgraded to a customized Debian 10 Linux snapshot, and continued to be upgraded through this year. Two different system images have emerged, as I've “bulked up” one table with more resources/multimedia capabilities for more advanced project work.
Provided continued support and administration of cluster resources to Dr. James McLean for his physics particle simulations at SUNY Geneseo (supposed to have wrapped up by September of 2017, but as many things go, still crawl along).
this is a continuation of activities related to the Armor Dynamics grant back in 2008. I've been maintaining the cluster for this project ever since.
in addition to general cluster administration, there has been increasing logistics of late as we deal with not only data backups, but drive replacements and RAID rebuildings.
presented programming at the Kids to College Program (06/02/2017)
presented programming at the College Life Program (04/13/2018)
presented programming at the Kids to College Program (05/14/2018)
Teaching and Curricula Objectives
Objective | Anticipated Completion |
instantiate N-ary factor pair explorations into CSCS1320 project sequence | aiming for fall 2018 |
instantiate N-ary factor pair explorations into CSCS2330 project sequence | aiming for fall 2018 |
instantiate abundant/perfect/deficient number explorations into CSCS2330 project sequence | aiming for fall 2018 |
continue my efforts to revive CSCS1460/CSCS2460, and retiring CSCS1320 | slow-going, but I'm increasingly seeing support in pursue this |
general enhancements/evolutions/progressions of my data/content management efforts | always on-going |
in CSCS2320 or CSCS2330, explore the implementation of a graph and/or hash table project(s) | assuming we get that far, fall 2018 |
Advising Objectives
Objective | Anticipated Completion |
keep doing what I'm doing; I seem to be plenty accessible to students for advising efforts (both my own and those who are not my official advisees) | on-going |
I should note my dissatisfaction with the removal of faculty's ability to issue instructor overrides. With the often prolific presence of banner errors, encountering a one-off issue turned out to be far more common than would be expected (ie prerequisite coding error, a student taking a higher math class being restricted from a class having a lower math course listed). Advising per student has now increased in duration and complexity, and far more sessions end up incomplete as additional actions need to be requested to sort out these issues. I can only imagine the increased burden and workload placed on the newly-deemed “privileged few” who are now being inundated with the sheer number of requests. Definitely not a viable optimization to the process workflow.
Professional Development Objectives
Objective | Anticipated Completion |
continue my French relearning endeavors | the true aspiration of knowing a language is to never stop using it; ideally I'd love to create content, but in general, on-going insights from being multi-lingual (it really is the gift that keeps giving) |
continue to explore my agricultural pursuits, both as a developed skill but as a theme for concept presentation | extended exposure to new domains allows me to better isolate familiar computing patterns |
explore Calculus from a philosophical point-of-view | this keeps popping up on my radar; I've just not had the opportunity to delve into it. With an increasing number of students being plug-n-chug calculator centric, I feel I need to expose them to the conceptual underpinnings of calculus, especially to aid in algorithm development |
explore the haskell programming language | Haskell is a functional programming language, and my endeavors have yet to really dig into this paradigm. Like French, it could offer up increasing insights and approaches to solutions |
Service Activity Objectives
continue to implement resources | with the major infrastructure reboot, there are still a number of auxiliary services not yet back in operation |
continue to maintain infrastructure | whenever I get to it - not critical, but long term useful as current software ages |
general content management system enhancements | on-going, functionality generally implemented as needed |