• Hey, guest user. Hope you're enjoying NeoGAF! Have you considered registering for an account? Come join us and add your take to the daily discourse.

Programming |OT| C is better than C++! No, C++ is better than C

Water

Member
just started c programming and i find this memory allocation stuff very difficult to understand...

does anyone know if there are any good resources to learn this stuff?

i'm more of a visual learned type of guy so if there are any videos or diagrams i would appreciate it.
The lecturer of a C course I worked on as a TA used to show this video from Stanford CS department at the beginning of every course.
What isn't covered on the video:
Q: When should one allocate memory dynamically instead of just creating a local variable?
A: When you want the memory to exist beyond the current function or block. Otherwise you shouldn't, because dynamic allocation complicates your code and puts you at risk of various bugs.
Q: How to avoid bugs?
A: Initialize every pointer to 0 unless you immediately call malloc on them; this results in more predictable crashes and easier debugging. Also set pointers to 0 immediately after you free() them.
Q: What's free() ?
A: You are responsible for eventually (e.g. at the end of your program) calling free() on every pointer you have gotten from malloc(); otherwise you have a memory leak. Good instructors should demand you use Valgrind or another tool which detect leaks and a ton of other memory-related bugs.
Q: How to use arrays?
A: Multiply the result of the sizeof() operator (which tells you how many bytes an individual type takes) with the size of the array to get the total byte count which you then ask from malloc(). When you have the array, either use the bracket operator to access the memory, or move the pointer by adding to it or subtracting to it.

Also, you should be aware of whether you're using C according to the C99 standard or one of the older standards. In C99 you can make a local variable-sized array without using malloc/free explicitly.
 

phoenixyz

Member
Also, you should be aware of whether you're using C according to the C11 standard or one of the older standards.
I don't really get why many university courses still teach ANSI-C, especially if their programs contain e.g. Java as the OOP language. Many things introduced in C99, like variable definitions somewhere inside a block, variable length arrays or the boolean type are present in pretty much every other language.
 

Water

Member
I don't really get why many university courses still teach ANSI-C, especially if their programs contain e.g. Java as the OOP language. Many things introduced in C99, like variable definitions somewhere inside a block, variable length arrays or the boolean type are present in pretty much every other language.
Oops! I meant to write C99 instead of C11 (which also exists, but has no significance to someone learning the basics). Edited my post to match.

In any case the teacher should define the C standard being taught/used. Otherwise you're just going with what a particular compiler accepts at default settings, and the code will be nonstandard (e.g. variable definitions inside a block get silently accepted, variable length arrays produce an error, even though both are actually C99 features).
 
I've started blogging (about programming). My first real posts will be about L-Systems and how I implemented them in Clojure, Scala and C#. I wrote all of the first part yesterday at about 2 AM, I went over it once today but if there's any mistakes or something, let me know. By the way, Tumblr's editor is shitty for longer posts like this. I wrote my post in Sublime Text using HTML instead of theirs and it was a lot better that way.
http://gyrosofwar.tumblr.com/

oo thanks for this. I could use some more programming relating blogs to follow.
 

tokkun

Member
I don't really get why many university courses still teach ANSI-C, especially if their programs contain e.g. Java as the OOP language.

I don't think universities are putting much money into C/C++ course development these days. Most places have transitioned it out of their core curriculum.
 
I don't think universities are putting much money into C/C++ course development these days. Most places have transitioned it out of their core curriculum.

Any ideas what most have transitioned to? Java, C#, Python? My university is still deeply entrenched in C++...at least my operating system's professor is big on C++11, and is actually teaching us modern C++ practices. As opposed to every other professor at the university. =\
 

Granadier

Is currently on Stage 1: Denial regarding the service game future
Any ideas what most have transitioned to? Java, C#, Python? My university is still deeply entrenched in C++...at least my operating system's professor is big on C++11, and is actually teaching us modern C++ practices. As opposed to every other professor at the university. =\

My course is teaching Java as the first language. Not sure yet if they will be introducing any other languages.
 

Water

Member
That is nightmarish.

Is it their goal to scare you into learning?
No, it's much more straightforward. Rather than acting as some kind of motivator, the video just imprints itself in the subconscious of the students, and they are unable to forget THE MAGIC WAND OF DEREFERENCING and other basic pointer concepts ever after. If you don't think the sanity of the student is an acceptable sacrifice in exchange for that, you haven't taught C to beginners.
 

Water

Member
Any ideas what most have transitioned to? Java, C#, Python? My university is still deeply entrenched in C++...at least my operating system's professor is big on C++11, and is actually teaching us modern C++ practices. As opposed to every other professor at the university. =\
Good programming education will use several languages eventually, but start from a good beginner language which Java, C# and especially C++ are not. My school does introductory programming in Python for non-CS students. Starting from last year, we use Scala on the first two courses for CS students; it's a slightly more controversial choice but far better than Java which is what we used to have.

My school just shut down our very high quality C++ programming course due to budget issues, politics or whatever, I'm not sure. Thing is, my course and presumably a number of others use C++ and it's technically a prerequisite. Last year about 1/3 of the students showed up with no C++ background, and I supported them with some materials and extra lectures on C++ to get them up to speed, but many aren't strong enough at programming in general to hop into a new language like that*. Now those people won't have a proper course to build their prerequisite skills.

*
That so many were able to pull through is partly because they didn't need full C++ skills. I wrote the assignments with a limited subset of C++, almost no pointers anywhere, little to no OO, and they never had to modify the program core structure.
 

arit

Member
I don't really get why many university courses still teach ANSI-C, especially if their programs contain e.g. Java as the OOP language. Many things introduced in C99, like variable definitions somewhere inside a block, variable length arrays or the boolean type are present in pretty much every other language.

No love for -Wall -Wextra -Werror -ansi -pedantic?

We were told it was because of legacy code, and I can somehow understand it. You are in a controlled environment where the complexity of programs is rather low, so the few unpleasant things are not as bad as they may seem, at least compared to having the first contact during actual work on existing code.
 

iapetus

Scary Euro Man
Good programming education will use several languages eventually, but start from a good beginner language which Java, C# and especially C++ are not.

Good programming education can still do a lot with languages that aren't ideal choices for beginners.

Good programming education is still, alas, a rarity. Bad language selections taught badly seem to be par for the course. I still see Java courses where object orientation is an apparently minor subject that's introduced towards the end of the course, for example.
 

Water

Member
Good programming education is still, alas, a rarity. Bad language selections taught badly seem to be par for the course. I still see Java courses where object orientation is an apparently minor subject that's introduced towards the end of the course, for example.
If such a course is supposed to be an introduction to programming in general (surely it can't be intended to create proficiency in Java...), my gut feeling is they should introduce object orientation as a minor subject at the end of the course, if not push it to the next course altogether. It's not pedagogically sound to push it on people before they have any opportunity to see why it's useful, the best you can get out of that situation is rote learning.

The real WTF in that scenario is choosing Java in the first place.
 
Sorry for the noob question but it's been a while since I've programmed in Java. I'm trying to access an arraylist in a different class, however the arraylist size is 0 for some reason every time I try to access it in an inner class. I tried making the arraylist a public static but that didn't work. I tried updating the arraylist with getters/setters, but this didn't work either(though, i would have to double check this). Is there any way to access an arraylist in a different class? Those are the only two ways I can remember...
 

phoenixyz

Member
Sorry for the noob question but it's been a while since I've programmed in Java. I'm trying to access an arraylist in a different class, however the arraylist size is 0 for some reason every time I try to access it in an inner class. I tried making the arraylist a public static but that didn't work. I tried updating the arraylist with getters/setters, but this didn't work either(though, i would have to double check this). Is there any way to access an arraylist in a different class? Those are the only two ways I can remember...
Could you post some code?
 

iapetus

Scary Euro Man
If such a course is supposed to be an introduction to programming in general (surely it can't be intended to create proficiency in Java...), my gut feeling is they should introduce object orientation as a minor subject at the end of the course, if not push it to the next course altogether. It's not pedagogically sound to push it on people before they have any opportunity to see why it's useful, the best you can get out of that situation is rote learning.

The real WTF in that scenario is choosing Java in the first place.

If you believe that OO languages can't be useful as beginner languages (which I'm not entirely sure I agree with), then yes, the first WTF moment is choosing Java. But even then, choosing to teach it as effectively a very badly designed procedural language is an arguably worse WTF moment, because every little thing you're teaching from that point onwards is how to do things very badly in the language you're teaching.

If you're teaching an object oriented language, then you should be teaching it as such. To do otherwise is similar to running a carpentry course in which you teach students to use drills for hammering in nails until two weeks from the end of the course where you show them that they can also be used for making holes in things.

Teaching by example where the example is fundamentally wrong is most definitely not pedagogically sound.
 

tokkun

Member
Any ideas what most have transitioned to? Java, C#, Python? My university is still deeply entrenched in C++...at least my operating system's professor is big on C++11, and is actually teaching us modern C++ practices. As opposed to every other professor at the university. =\

Java is the core language taught most places. Intro courses may use some other language; Python is getting popular. Haskell used to be a common choice if professors liked functional programming, and those courses are starting to give way to Scala since that language is actually used in industry.

In regards to the debate over what languages to select, I think most people see the question of "is this language useful outside of school" as a more important one than "is it easy to learn fundamental concepts using this language". A lot of students view learning to program as more of a trade education than a theoretical one, and accreditation processes often look at the relationship between what is being taught and the job skills needed for positions in the related industries. With limited time, schools favor teaching languages that can be put on your resume, even if they are not ideal for learning theory.
 

Water

Member
If you believe that OO languages can't be useful as beginner languages (which I'm not entirely sure I agree with), then yes, the first WTF moment is choosing Java.
What I said was that I don't believe in teaching OO to beginners because they won't get it anyway. That doesn't mean you can't use an object oriented language. Scala is more object oriented than Java, but unlike Java, it has enough expressive power that a beginner working with it can do what they need to do without engaging in tortured pseudo-OO techniques.
But even then, choosing to teach it as effectively a very badly designed procedural language is an arguably worse WTF moment, because every little thing you're teaching from that point onwards is how to do things very badly in the language you're teaching.
False. The goal of introductory programming education is not at all the same as proficiency in the production use of a given language. Consider a course which attempts to initiate the students into embedded programming and makes use of C++, and another course which tries to create good C++ programmers in general. A teaching progression and curriculum that are great for the former could well be terrible for the latter.
 
My impression from talking to CS profs at my school was that the first semester of CS was to get everyone proficient enough with a language so that more general computer science concepts could be taught with it in the second semester and beyond.

In later year courses the language for a given assignment was up to you.
 

EMT0

Banned
Guys, I was wondering if I could get a bit of advice on what I should turn to patch some holes in my knowledge. I took a class last semester called Computer Organization; my problem is that I feel like I learned nothing in that class despite getting a B and wanted advice on what I should look at to learn what I didn't end up learning in that class. Below is the course description as well as the topics covered by the class:

Code:
[B]Course Description:[/B]
Examines the hierarchical structure of computer architecture. Focuses on multi
-
level machine organization
using a simple assembly languag
e. Includes processors, instruction execution, addressing techniques, data
representation, and digital logic.

[B]General Course Purpose:[/B]
The course should stress the hierarchical structure of a computer. It should incorporate a simple assembly language to serve as an example of how the various components interact. The logic design part of the outline is specific and essential to this course. The functional logic design level is emphasized rather than circuit details, which will be covered in engineering courses. The functional level provides the student with an understanding of the mechanics of information transfer and control within the computer system.

Code:
[B]Major Topics to be Included[/B]

I.Introduction/review:

A. Number representation and arithmetic
   1. Binary, octal, and hexadecimal numbers
   2. One’s and two’s complements and other representations
   3. Addition and subtraction
B. Boolean algebra and truth tables

II. Multi-level machine organization
A. Structural overview
B. Digital logic and integrated circuits
   1. Boolean functions
      a.Gates
      b.Functions
      c.Simplification
   2.Integrated circuits
      a.Combinational circuits (including adders, shifters, decoders, multiplexers, ROM’s)
      b.Flip-flops
      c.Sequential circuits (including registers, counters, RAM)
C.Micro-programming
D.Machine language level
E.Overview of assembly language
F.Memory management
   1.Virtual memory
   2.Paging
   3.Segmentation

This is the book I was to learn from, although I found it equally unhelpful. Any good resources for making up these topics?
 

Water

Member
In regards to the debate over what languages to select, I think most people see the question of "is this language useful outside of school" as a more important one than "is it easy to learn fundamental concepts using this language". A lot of students view learning to program as more of a trade education than a theoretical one, and accreditation processes often look at the relationship between what is being taught and the job skills needed for positions in the related industries. With limited time, schools favor teaching languages that can be put on your resume, even if they are not ideal for learning theory.
I think it's easy to underestimate the value of good learning languages and overestimate the value of "useful outside of school". I've read of an experiment where one group of new CS students got two semesters of Java, and another group got one semester of Scheme and one semester of Java; even on that short timeframe, the result was that the Scheme group was not just significantly better at programming but better at Java programming in the end. Unfortunately can't locate the paper right now.

And what's the equation for someone who's going to take very little programming, like one course? That amount does not make anyone de facto worth hiring as a programmer. Some of those people will end up needing/wanting to do some programming as part of studies or work later, and they are going to be using a multitude of languages and tools for it. Some won't be doing any coding themselves and just need to communicate with programmers. No matter what we teach them, most of them aren't going to need that exact thing. The best we can do for them is to maximize their general understanding of programming (and maybe favor languages and environments that have the approachability and immediate productivity to attract some students to keep hacking on their own, e.g. Python).
 
imo, I think understanding how languages work at a low level is important so I think learning C/C++ is the way everyone should start. Then from there, understand OOP, Design Patterns, etc. As a developer if you understand the basics, then picking up something like Java or C# will be pretty easy.
 

Granadier

Is currently on Stage 1: Denial regarding the service game future
I think it's easy to underestimate the value of good learning languages and overestimate the value of "useful outside of school". I've read of an experiment where one group of new CS students got two semesters of Java, and another group got one semester of Scheme and one semester of Java; even on that short timeframe, the result was that the Scheme group was not just significantly better at programming but better at Java programming in the end. Unfortunately can't locate the paper right now.

And what's the equation for someone who's going to take very little programming, like one course? That amount does not make anyone de facto worth hiring as a programmer. Some of those people will end up needing/wanting to do some programming as part of studies or work later, and they are going to be using a multitude of languages and tools for it. Some won't be doing any coding themselves and just need to communicate with programmers. No matter what we teach them, most of them aren't going to need that exact thing. The best we can do for them is to maximize their general understanding of programming (and maybe favor languages and environments that have the approachability and immediate productivity to attract some students to keep hacking on their own, e.g. Python).

My introduction classes have been in Java, and they have been focused on teaching the language of Java instead of the concepts of programming computers. It is more focused on memorizing the language then learning why certain things do what they do.

It would be nice if it was using a language like Python or something and had more focus on teaching the concepts of communicating with the computer. I feel that understanding that allows you to view languages as simply various ways to communicate, (like English and German) rather than the single link to the computer because you don't understand anything else.

imo, I think understanding how languages work at a low level is important so I think learning C/C++ is the way everyone should start. Then from there, understand OOP, Design Patterns, etc. As a developer if you understand the basics, then picking up something like Java or C# will be pretty easy.

My opinion is that it should go Python/Scheme --> C/C++ --> Java/C# or other OOP --> design patterns. I could be completely wrong though.
 

tuffy

Member
I would actually recommend programmers learn some small amount of assembly language before learning C simply because pointers and addresses are an abstraction that might be easier to grasp after working with them directly.
 
I would actually recommend programmers learn some small amount of assembly language before learning C simply because pointers and addresses are an abstraction that might be easier to grasp after working with them directly.

At the college I graduated from, a required course was an assembly class where we talked about the registers and memory management. Make a calculator in assembly was one of the lab projects. I hated it at the time but I totally understand now why that class is necessary.

My opinion is that it should go Python/Scheme --> C/C++ --> Java/C# or other OOP --> design patterns. I could be completely wrong though.

I feel like Design Patterns and OOP should be emphasized much earlier. You should be able to apply the knowledge to any language so learning that along say C/C++ will make things easier to transition to in a higher level language like Java. But as you said, these are just our opinions. Regardless, it is something that all developers should have a solid understanding on.
 

iapetus

Scary Euro Man

We'll have to disagree on that, then. My experience and firm belief is that any form of teaching where you're teaching people to do something in a fundamentally wrong way, where all your examples are bad examples and where if they continue to use things in the way that you are teaching them they will be doing things the wrong way is a bad form of teaching.

You're making one error by picking Java for a task it's not suited to (teaching procedural programming), but you're compounding that error, not rectifying it, by teaching a godawful tortured form of Java as correct in an attempt to work around your original error. Either pick a language where working outside an OO framework is transparent and teach it that way, or teach the language you've chosen to use properly. Anything else is a mistake.
 

Tamanon

Banned
Just do the best of both worlds and teach Ruby as a Intro to Comp Sci language. :p

Our school was C++, but moved to Python for the intro class. And honestly, I think it worked well for me.
 

iapetus

Scary Euro Man
What I said was that I don't believe in teaching OO to beginners because they won't get it anyway.

My experience is that this isn't the case. I'm not talking about jumping into complex design patterns from day one, but abstraction, encapsulation, message passing - these are concepts that make a lot of sense to beginners straight away.

False. The goal of introductory programming education is not at all the same as proficiency in the production use of a given language.

But we're back to the carpentry example. The goal of a course teaching you to nail two planks together and a course teaching you to hang a door correctly are not at all the same. But if you've decided for some unholy reason that you'll be providing both sets of students with a drill, don't tell the first lot to use it for pounding nails.

I think it's easy to underestimate the value of good learning languages and overestimate the value of "useful outside of school".

Glad to see we at least agree strongly on some things. :p Most people are going to end up using different (and potentially unfamiliar) technologies within the scope of their career, or within a single job, or within a single project. A general programming education has to be about teaching people to use programming languages, not a programming language, even if you do the former by doing the latter.
 

tokkun

Member
I think it's easy to underestimate the value of good learning languages and overestimate the value of "useful outside of school". I've read of an experiment where one group of new CS students got two semesters of Java, and another group got one semester of Scheme and one semester of Java; even on that short timeframe, the result was that the Scheme group was not just significantly better at programming but better at Java programming in the end. Unfortunately can't locate the paper right now.

And what's the equation for someone who's going to take very little programming, like one course? That amount does not make anyone de facto worth hiring as a programmer. Some of those people will end up needing/wanting to do some programming as part of studies or work later, and they are going to be using a multitude of languages and tools for it. Some won't be doing any coding themselves and just need to communicate with programmers. No matter what we teach them, most of them aren't going to need that exact thing. The best we can do for them is to maximize their general understanding of programming (and maybe favor languages and environments that have the approachability and immediate productivity to attract some students to keep hacking on their own, e.g. Python).

It's not easy to change a curriculum. To co-opt an old joke, ask 5 computer scientists what the best beginner's language is and get 6 opinions. There is a lot of inertia and a lot of stakeholders. The guy teaching the Intro to Programming course may be on-board with switching to a functional language, but the guy teaching the 2nd-year class may not be happy about a change in prerequisites.

The cost of developing a new course is also high. You may need an entire new toolchain, from the student development environment, to debuggers and documentation, to automatic grading scripts, to textbooks, to lecture notes and slides, to homework assignments. All of that is a recipe for sticking with politically safe choices, and languages that look good on a resume are politically safe.
 

Water

Member
We'll have to disagree on that, then. My experience and firm belief is that any form of teaching where you're teaching people to do something in a fundamentally wrong way, where all your examples are bad examples and where if they continue to use things in the way that you are teaching them they will be doing things the wrong way is a bad form of teaching.
We don't disagree on that at all.
You're making one error by picking Java for a task it's not suited to (teaching procedural programming), but you're compounding that error, not rectifying it, by teaching a godawful tortured form of Java as correct in an attempt to work around your original error. Either pick a language where working outside an OO framework is transparent and teach it that way, or teach the language you've chosen to use properly. Anything else is a mistake.
If it wasn't clear enough from the previous posts, I would never choose to use Java for introductory programming education. What I'm saying is that in a situation where one is forced to use it for that purpose, the approach that makes the most of the bad situation is to teach a minimal subset of Java, as opposed to trying to make anyone a Java programmer (which is an impossible and misguided goal at that skill level anyway). The subset I'd teach would contain very little OO. You seem to assume that would involve writing bad Java, but I think it would just require focusing on implementing things where the OO dead weight is unnecessary, such as basic algorithms.
 

iapetus

Scary Euro Man
You seem to assume that would involve writing bad Java, but I think it would just require focusing on implementing things where the OO dead weight is unnecessary, such as basic algorithms.

I believe you described it as "tortured pseudo-OO techniques". I don't think I can believe that we disagree on the notion that this would count as 'bad Java'.

We certainly agree that if this is the course you're teaching, Java is the wrong tool for the job, though.
 

Kalnos

Banned
This is the book I was to learn from, although I found it equally unhelpful. Any good resources for making up these topics?

Did this class have a lab portion to it? I found I learned a lot of this by doing it in a lab (and not just a simulator). There should be quite a few electrical engineering resources that cover all of that information, though I can't personally recommend any.
 

Water

Member
I believe you described it as "tortured pseudo-OO techniques". I don't think I can believe that we disagree on the notion that this would count as 'bad Java'.
Sorry, I don't think I was clear enough what I was comparing. I'm saying it's either-or:

If you try to cover with Java the same theory you could with a good learning language, the result will be students writing tortured pseudo-OO, getting nervous breakdowns and switching majors to origami folding.

Or you can cut and refocus the theory to what's convenient to write with a small subset of Java that doesn't require confusing the students with OO. Not as bad, but still silly and definitely not optimal.
 

Massa

Member
Sorry, I don't think I was clear enough what I was comparing. I'm saying it's either-or:

If you try to cover with Java the same theory you could with a good learning language, the result will be students writing tortured pseudo-OO, getting nervous breakdowns and switching majors to origami folding.

Or you can cut and refocus the theory to what's convenient to write with a small subset of Java that doesn't require confusing the students with OO. Not as bad, but still silly and definitely not optimal.

It's not as bad, it's much worse. You're not just failing to properly teach the language but also training bad practices from a very early start.

I don't think properly starting with an OO language is as bad as you're making it out to be.
 

Granadier

Is currently on Stage 1: Denial regarding the service game future
I'm in my introductory programming course right now. The professor is trying to teach Java OO programming. It's bad.
 

usea

Member
The intro class I took only had to cover variables, conditionals, expressions, statements, loops, functions, arrays. It also covered computers in general, memory, etc. I think given those goals, writing non-OO java is fine, and generally students have no problem accepting a small amount of unexplained boilerplate (public class and main entry point). Given that material to cover, I don't think it matters all that much what language you pick.

If your intro semester is more ambitious, certain languages might do better than others. But it's probably not even going to be one of the top 10 things that decides the success of the class.
 

Water

Member
It's not as bad, it's much worse. You're not just failing to properly teach the language but also training bad practices from a very early start.
What bad practices would those be?
Also, see previous posts: it's not the purpose of an introductory programming class to "teach the language". Not the main purpose anyway.
I don't think properly starting with an OO language is as bad as you're making it out to be.
See previous posts. I'm not against OO languages in general. I'm against Java for a number of reasons. One of those reasons is that it isn't even a good language for teaching OO.
 

EMT0

Banned
Did this class have a lab portion to it? I found I learned a lot of this by doing it in a lab (and not just a simulator). There should be quite a few electrical engineering resources that cover all of that information, though I can't personally recommend any.

Nope, no lab. It was strictly lecturing with a few examples of little and big endian notations on the board at one point.
 
Hey any of you guys still in school, particularly in the US - are any of you into the hackathon scene, especially the big national ones that are really taking off and becoming awesome? I often see people asking what to do to improve, especially as beginners - my advice: attend things like these! You basically get together in a location with a few hundred to couple thousand students from all over the US and abroad, and undertake 36 hour periods of intense work on whatever tech related project you want, so you can totally go in and spend the time learning something you've never done before (like web dev, for me), or go in and make the crazy idea you've been dreaming up forever, or at least prototype it. There are always reps from tons of companies there, big ones to startups, there are tons of API use prizes, free food, often at least partial reimbursement for travel if your school doesn't send a bus - seriously, I'm distraught this is just taking off and I've only gotten into it the last half of my senior year, because this is an amazing way to experiment, learn new things, meet like-minded smart people, get yourself out in front of tech companies, add to your portfolio, see new places, and potentially even win prizes.

I seriously seriously suggest checking out the schedule for the rest of this seasons big events: http://mlh.io/events/

Edit: Also if there's a thread about hackathons (I couldn't find one?) or they've been discussed before here, someone point me to that plz? I'd be curious to read about people's thoughts on and experiences at them.
 

-COOLIO-

The Everyman
how does one balance this avl tree?

XMKN8Jh.jpg
 

usea

Member
Hey any of you guys still in school, particularly in the US - are any of you into the hackathon scene, especially the big national ones that are really taking off and becoming awesome? I often see people asking what to do to improve, especially as beginners - my advice: attend things like these! You basically get together in a location with a few hundred to couple thousand students from all over the US and abroad, and undertake 36 hour periods of intense work on whatever tech related project you want, so you can totally go in and spend the time learning something you've never done before (like web dev, for me), or go in and make the crazy idea you've been dreaming up forever, or at least prototype it. There are always reps from tons of companies there, big ones to startups, there are tons of API use prizes, free food, often at least partial reimbursement for travel if your school doesn't send a bus - seriously, I'm distraught this is just taking off and I've only gotten into it the last half of my senior year, because this is an amazing way to experiment, learn new things, meet like-minded smart people, get yourself out in front of tech companies, add to your portfolio, see new places, and potentially even win prizes.

I seriously seriously suggest checking out the schedule for the rest of this seasons big events: http://mlh.io/events/

Edit: Also if there's a thread about hackathons (I couldn't find one?) or they've been discussed before here, someone point me to that plz? I'd be curious to read about people's thoughts on and experiences at them.
I've been to one in New Orleans, a bit different format from the recent ones. It was a meeting of people (most of them in local government or non-profits) with ideas of how to improve access to data about the city, and developers willing to donate their time to weekend projects. After the presentations the first night I didn't come back :( But overall it was a good experience.
 

tokkun

Member
Guys, I was wondering if I could get a bit of advice on what I should turn to patch some holes in my knowledge. I took a class last semester called Computer Organization; my problem is that I feel like I learned nothing in that class despite getting a B and wanted advice on what I should look at to learn what I didn't end up learning in that class. Below is the course description as well as the topics covered by the class:

What is your purpose for learning the material?

Some of those topics are more oriented toward hardware design than software, and could probably be skipped if you are just looking to build programming skills.
 
I've been to one in New Orleans, a bit different format from the recent ones. It was a meeting of people (most of them in local government or non-profits) with ideas of how to improve access to data about the city, and developers willing to donate their time to weekend projects. After the presentations the first night I didn't come back :( But overall it was a good experience.
Oh cool, so that sounds like the attendees were professionals and not students? That's cool that they would give their time, and it sounds like for some great causes that probably can't afford paying for the types of stuff they need - bet they had some interesting problems that needed solving, so a win win for them and devs looking for some hobby/personal development work on the side. Thanks for sharing that, that sounds like the type of thing I want to look into getting involved with or helping to start when I begin working next year and am no longer a student.
 
So I need some advice for programming for Android. My idea is basically:

I want people to be able to install my app on their phone which would allow them to use custom emoticons from local images installed by the app (rather than Unicode) in their text messages. People who also have the app will be able to see the images from the sender in the text message.

I'm thinking about how I could get this to work and I think the absolute ideal solution would be a system where the user enters text, for example, "hat", and when that is sent, a small icon of a hat would appear in the text message, replacing the text "hat." Basically a similar system to how Twitch.tv has their chat set up.

Right now I have a system that allows the user to click a button next to the text field and pick an emoticon from a grid (similar to emojis except the button is not located on the keyboard). But the big issue with this is that the button is not part of the keyboard and I have this working in a separate app that I put together, not in the text message app.

What I'd like to know is, am I going to have to create a custom keyboard and add my custom button to it to get this to work in the text messaging application, rather than only working in the specific app?

If any of you guys know of a good method to implement my ideas, I'd be very appreciative to hear about it. I'm going to continue working with what I have now and see if I can implement it differently so that it will work with text messages. I'm not extremely familiar with programming for Android as I haven't touched it for a couple of years.

Thanks for any help/feedback!
 

EMT0

Banned
What is your purpose for learning the material?

Some of those topics are more oriented toward hardware design than software, and could probably be skipped if you are just looking to build programming skills.

To be quite honest, I'm not sure. I'm only just getting to the two-year mark in a community college with the aims of transferring elsewhere for my bachelors and I'm already finished with my CSC requirements thanks to having completed that class. Although what this has taught me is that I'd much prefer to stay away from hardware; some of the stuff the teacher talked about flew right over my head.
 

Granadier

Is currently on Stage 1: Denial regarding the service game future
Could any of you guys recommend some websites or books that teach the fundamentals underneath programming?

ie. Fundamentals that can be applied to all programming languages.
 

leroidys

Member
Could any of you guys recommend some websites or books that teach the fundamentals underneath programming?

ie. Fundamentals that can be applied to all programming languages.

Well, there are a vast amount of programming languages with various paradigms.

The most general things that could safely be applied to all programming languages are things like creating functions, conditional statements, loops, objects... all of which you should learn from any decent language specific book.
 
Top Bottom