Refresh
It’s been years since I’ve coded C, straight C, from scratch. I use my computer science knowledge to solve problems all the time, but not in C. I can look at and follow along C, make maintenance changes, and those sorts of edits without a problem. Starting from scratch would mean breaking out reference material. The knowledge is there. It’s not easily retrievable. I’ve spent the last several years working in Python and Ruby developing test automation for embedded systems. My background is C. I’ve written lots of C for embedded systems. System level C is designing and writing APIs and the backend protocols for middleware like filesystems. Having survived a couple layoffs I think it’s a good time to review my core skills.
I’m looking at this goal, refreshing my computer science background, as prep I’d do for a job search. Part of that is considering what types of jobs I would be interested in doing. My breadth of skills is great, but I need to leverage my experience. IMO, that means focusing on my C skills specifically for the embedded market.
Process
Researching interview prep led me to https://www.geeksforgeeks.org. Following along with the interview prep process of data structures, algorithms, design & architecture will get me in interviewing-shape. Even without the need to interview the review will help work activities. I don’t see it as a big risk in investing time in to this process. Worse case is I’ve brought my C skills back up to a level I can more easily maintain.
I found lots of good reviews for the book Cracking the Coding Interview. I’m going to stick with online resources for now. The challenge of working through data structure and algorithms will keep me busy for a while. I may search out the book later.
The review process starts with data structures. My first milestone is to implement a data structure, singly linked list, in C along with tests as well as answering Big-O questions for access, search, insert, and delete operations.