Everyone knows that learning sometimes is a painly task, and is seen more as an obstacle for many students in more areas than can be cited in a bible-sized book.
Now I'm a Masters Student, and as expected, the load of work to each course I'm getting is way more huge than the "average graduation rhythm". Reading whole chapters to try to answer a not so nicely composed test is really demotivational, specially when you try to put all your efforts and get a low grade.
Books are great and is still the primary source of consistent knowledge on the world. Ebooks are great (true story...) but is still a book. No one have time to read a whole technic book during a course, and if you have, congratulations, you're one of the few that still have (patience and time, I mean).
That's where the Slide Set works. Reading slides is a practice over millions students, believe me, nothing is more rewarding to a college student than find a good set of slides that well explains all you need in few words (and with examples!).
Slides are a source of condensed knowledge, and if you know how to use it, is a good way to learn things the faster way possible. Many education professionals (in other words, teachers of all kinds), use it as a tool for his/her own sake - "It's a thing that helps me to organize my classes...".
I think the opposite. "Slides are tools not just for me to bring knowledge, but to share this knowledge in a simple and straight-forward way". Making a good slide set is more than a work, is an art. And don't think a slide with a figure is art, specially a picture of something that has no relation with what you're talking about in the rest of the set.
I intend to be a Teacher/Researcher in a near future (maybe next year if all goes right), but I'm still a student and have been thinking about how to organize a self-contained course, meaning that the material I use to give classes is the essential and is good enough to support my future students. This is a really tough task that demands time and hours of dedication (tried to make slides for a 30 min classes, consumed 6 to 8 hours of my time).
The thing is, who is going to give a class really needs to understand the real essence of each subject and do a travel-pack for anyone that wants to learn about that. And more, in a way that is not just words floating to the infinity and beyond. Things that are apparently linked to nothing are just ignored by most of people (including me).
Other important factor is, if you want to make good slides, having a good sense of colors and spacing is essential. A messy of fonts, colors, figures and GIFs is a children's playground, not a didatic material. Notions on transactions and using comments fields is a good way to organize your slides.
Too many words? BAD! Just an Image? BAD! An example without an explanation? Dispensable.
Exercises? At least a hint on how to solve is good too.
A good recipe to making a slide set (works for me at least):
- Use PowerPoint or Keynote : both have great "standard color schemes" that is way more adequate to all kinds of presentations. If you are not a design related professional, leave the work to the experts.
- If you don't know, learn to use TEMPLATES : templates are there to use, you want to put an Image with a sub, use the template for this, there are many of them to use.
- Present a Topics slide with the Agenda : presenting the schedule of what you will present on that slide set will improve your time synchronization during presentation and give a time notion for your target public.
- Shrinking is not an option : If you want to put a huge text/citation, don't reduce too much the font size, just cut it into smaller pieces and distribute in more slides, maintaining the main title.
- Animations are welcome : If you want to put some simulations (like an algorithm tracing, a network behavior, an industrial description) it's always very welcome. This kind of resource helps understanding specially iterative processes.
- Avoid complex transaction effects : You won't have the transaction resource if you export your slides to PDF, so, using animations like the running stickman on a block of paper is more adequate because it will not depend on effects.
That's more things to do and to know, but I will stop here.
Learn to use your own knowledge to express and share to another people is a great and rewarding task. Try it! =]
Hope you enjoyed!
quinta-feira, 24 de abril de 2014
quarta-feira, 23 de abril de 2014
VANETs and How can a vehicle chat to another one?
Me: "Can my car talk to my neighbors car?"
Tonimobile: Yes, I can! (on a robotic vintage voice)
Me: "WHAT?"
In a distant future, something like this dialog would be possible, but on a realistic near present, at least exchange some information between vehicles is a valid way of thinking.
On this days, where anything between a refrigerator and a drone have wireless access to networks like WiFi, WiMAX, 3G, 4G, GPS and others, thinking to have networks connected in cars, trucks and buses aren't absurd anymore. Think if you are on a highway, travelling, and on your car panel, information like weather forecasting, real-time news about your path and destiny, traffic mapping and many others. That would be great right? RIGHT! And more, if your car understand the information about an accident that occurred a few meters from you and prevent you to engage on that destructive and dangerous perimeter. Wow!
Someone could say: "Yeah, but with my iPhone I can get better things!". Of course you can, but using an iPhone driving is prohibited and dangerous. A clear LCD panel on the vehicle console would be a valid solution.
Another one could say: "OK, if I fix my tablet with one of those "tablet hangers" that stick to the glass is sufficient". Agreed, but Internet is not a structure available on each street, unless you have a satellite connection. Besides this, imagine the structure that a network of this kind, that covers all streets in your country would be (lot of antennas and cables mixed to the beautiful landscape of the mountains).
And this two "alternatives" still can't prevent you to crash your car in a truck.
That's where the concept of VANETs (Vehicle Ad-hoc Networks) lies. Use the cars, trucks and buses as the main transmission media. If every vehicle have an interface and a memory buffer, why not? Someone takes information from another vehicle, and pass to the next a few kilometers away. Simple? Conceptually, YES! On a real-word view? Definitely NO!
There are 2 basic modalities of communication on VANETs:
V2I - Vehicle to Infrastructure - Vehicle, this is Antenna. Antenna, this is Vehicle. Pretty simple. You can view it in a funny way, looking to a car as a huge smartphone with wheels. There is more complicated problems related, but is basically the same concept.
V2V - Vehicle to Vehicle - This is where the things get more interesting. Vehicle this ........ Vehicle th.... All right. How can I communicate with another vehicle and establish a solid link to pass my information timely, before I get miles and miles away. Now you're starting to see where's the problem.
There are many studies of the area, for great content distribution networks relying on car mobility models, simulators for vehicle network behavior, accident prevention, traffic monitoring, security and privacy issues..
How can I represent a network like this?
This VANETs are complex dynamic networks that varies during time. Let's imagine describing a network with circles and lines. Each circle is a car, each line represents a connection between cars. For a specific moment, there will be a set of circles related by lines. In another moment some of the cars could be turned off, and the lines that linked those cars will disappear. It's a random phenomena that can be described in a temporal way.
That's where the concept of Time-Varying Graphs fits. A graph is a mathematical formalism that allows to describe relations between thins. Avoiding a little bit the math things, let's rethink our problem.
Now we will name the circles as nodes, and the lines as edges. We have a very simple graph! Inserting information on the nodes and edges can describe a phenomenon like a network. On the example below, imagine 10 cars that can communicate with each other, and each connection takes the time that is represented to reach the other car. On "graph therms" 10 nodes, linked by weighted edges with integer values.
This representation is intrinsically static (does not change during time). How can we make it change during time? With some mathematic armory we introduce some parameters that allows us to change those edges over a variable (on our case, time).
On a simple way, each time will have a different "on demand" representation, according to the situation that the network is. Just imagine making a lot of graphs for each minute of the network and stacking all of those together, giving just a post-it with the timetag to another person search to a specific moment. That is pretty much what a time varying graph can represent in really simple therms.
Now we can describe a time varying chaos with a graph =]. This tool could solve many problems on mobility models if used adequately (specially one, the introduction of accidents on vehicle networks simulation - theme of my graduation work).
Of course there is a lot more to talk about it, but for a introductory post I will stop here. More posts on the subject coming soon.
Hope you enjoyed!
Tonimobile: Yes, I can! (on a robotic vintage voice)
Me: "WHAT?"
In a distant future, something like this dialog would be possible, but on a realistic near present, at least exchange some information between vehicles is a valid way of thinking.
On this days, where anything between a refrigerator and a drone have wireless access to networks like WiFi, WiMAX, 3G, 4G, GPS and others, thinking to have networks connected in cars, trucks and buses aren't absurd anymore. Think if you are on a highway, travelling, and on your car panel, information like weather forecasting, real-time news about your path and destiny, traffic mapping and many others. That would be great right? RIGHT! And more, if your car understand the information about an accident that occurred a few meters from you and prevent you to engage on that destructive and dangerous perimeter. Wow!
Someone could say: "Yeah, but with my iPhone I can get better things!". Of course you can, but using an iPhone driving is prohibited and dangerous. A clear LCD panel on the vehicle console would be a valid solution.
Another one could say: "OK, if I fix my tablet with one of those "tablet hangers" that stick to the glass is sufficient". Agreed, but Internet is not a structure available on each street, unless you have a satellite connection. Besides this, imagine the structure that a network of this kind, that covers all streets in your country would be (lot of antennas and cables mixed to the beautiful landscape of the mountains).
And this two "alternatives" still can't prevent you to crash your car in a truck.
That's where the concept of VANETs (Vehicle Ad-hoc Networks) lies. Use the cars, trucks and buses as the main transmission media. If every vehicle have an interface and a memory buffer, why not? Someone takes information from another vehicle, and pass to the next a few kilometers away. Simple? Conceptually, YES! On a real-word view? Definitely NO!
There are 2 basic modalities of communication on VANETs:
V2I - Vehicle to Infrastructure - Vehicle, this is Antenna. Antenna, this is Vehicle. Pretty simple. You can view it in a funny way, looking to a car as a huge smartphone with wheels. There is more complicated problems related, but is basically the same concept.
V2V - Vehicle to Vehicle - This is where the things get more interesting. Vehicle this ........ Vehicle th.... All right. How can I communicate with another vehicle and establish a solid link to pass my information timely, before I get miles and miles away. Now you're starting to see where's the problem.
There are many studies of the area, for great content distribution networks relying on car mobility models, simulators for vehicle network behavior, accident prevention, traffic monitoring, security and privacy issues..
How can I represent a network like this?
This VANETs are complex dynamic networks that varies during time. Let's imagine describing a network with circles and lines. Each circle is a car, each line represents a connection between cars. For a specific moment, there will be a set of circles related by lines. In another moment some of the cars could be turned off, and the lines that linked those cars will disappear. It's a random phenomena that can be described in a temporal way.
That's where the concept of Time-Varying Graphs fits. A graph is a mathematical formalism that allows to describe relations between thins. Avoiding a little bit the math things, let's rethink our problem.
Now we will name the circles as nodes, and the lines as edges. We have a very simple graph! Inserting information on the nodes and edges can describe a phenomenon like a network. On the example below, imagine 10 cars that can communicate with each other, and each connection takes the time that is represented to reach the other car. On "graph therms" 10 nodes, linked by weighted edges with integer values.
On a simple way, each time will have a different "on demand" representation, according to the situation that the network is. Just imagine making a lot of graphs for each minute of the network and stacking all of those together, giving just a post-it with the timetag to another person search to a specific moment. That is pretty much what a time varying graph can represent in really simple therms.
Now we can describe a time varying chaos with a graph =]. This tool could solve many problems on mobility models if used adequately (specially one, the introduction of accidents on vehicle networks simulation - theme of my graduation work).
Of course there is a lot more to talk about it, but for a introductory post I will stop here. More posts on the subject coming soon.
Hope you enjoyed!
Why I've changed from C/C++ to Python for my "creativity work"
I've learned C/C++ during my graduation, and this is my favorite programming language since than. I don't have much experience with Java, and I don't feel really confortable programming using Java.
Python allows you to "break the fifth wall" on programming. With tons of libraries - from data structures to machine learning, graphs, plotting and much more - you could transform programming into a really funny thing. Of course, Python isn't a heaven of the programmers. If you want performance, stay with C and Assembly, because Python is an interpreted language, like Java.
There is a "Virtual Machine" and the code is turned on bytecode. Very very similar! With the similarities, same problems come together. At least the garbage collector works very well ;D!
My first experience was with graph theory programming tasks. For that, I've used a library named NetworkX - there is a couple of posts talking about graph theory mixed over the blog. At the first time a weakly-typed language scares a lot at first, and you keep searching those primitive types (int, char, bool, etc) and the brackets to functions. Python don't use any of those, anything can be a vector, a list, a number, a symbol, you choose.
This freedom costs, but it's very worthy for fast programming facilities. Python is like a very large cloth hanger, where you append a lot of ready-to-use "clothes"(libraries) and start using. The only thing you have to do is install python, install whatever thing you want to solve your problem and start using it.
Many begginner's courses on computer programming are using Python instead another classic language because of this. Results comes way faster and it's more rewarding to a the user. Besides this, the learning curve is very fast when you adapt your vision to more straight-forward solutions and smarter functions that hides the dirty work from you.
But, everything has a but, if you know what I mean. Python is not a solution for every problem in the world. In my opinion, it's a great language for accelerate development throughput and a real motivational language to users that use classical languages.
For new programmers, maybe. I think C have a well-behaved syntax that helps to develop algorithmic knowledge and helps to discipline your mind when treating a problem. Python have to much ready-to-use facilities and if you don't use an IDE to help you, it's very difficult to maintain an order over lines and lines of code.
Well, if you want to learn programming Python this is my recommendations:
- READ THE MANUAL : No one reads the manual for nothing, but documentation is a really great source for solving problems. Google for Python Doc and be happy.
- Learn using examples : There is nothing more rewarding than programming with a greater objective in mind. Take a time to search for great applications (a game, for example) and learn the language to achieve your goals.
- Use an IDE : You want to be a hardcore coder? It's your problem. If you want to improove your code organization, use an IDE (NINJA-IDE is my recommendation). If not, at least use a text editor with syntax highlighting (gedit, Notepad++, Notepad!).
- "Don't worry about a thing, cause everything is gonna be alright"
Hope you enjoyed! If you liked, share!
This was the situation until I learned to program in Python.
Python allows you to "break the fifth wall" on programming. With tons of libraries - from data structures to machine learning, graphs, plotting and much more - you could transform programming into a really funny thing. Of course, Python isn't a heaven of the programmers. If you want performance, stay with C and Assembly, because Python is an interpreted language, like Java.
There is a "Virtual Machine" and the code is turned on bytecode. Very very similar! With the similarities, same problems come together. At least the garbage collector works very well ;D!
My first experience was with graph theory programming tasks. For that, I've used a library named NetworkX - there is a couple of posts talking about graph theory mixed over the blog. At the first time a weakly-typed language scares a lot at first, and you keep searching those primitive types (int, char, bool, etc) and the brackets to functions. Python don't use any of those, anything can be a vector, a list, a number, a symbol, you choose.
This freedom costs, but it's very worthy for fast programming facilities. Python is like a very large cloth hanger, where you append a lot of ready-to-use "clothes"(libraries) and start using. The only thing you have to do is install python, install whatever thing you want to solve your problem and start using it.
Many begginner's courses on computer programming are using Python instead another classic language because of this. Results comes way faster and it's more rewarding to a the user. Besides this, the learning curve is very fast when you adapt your vision to more straight-forward solutions and smarter functions that hides the dirty work from you.
But, everything has a but, if you know what I mean. Python is not a solution for every problem in the world. In my opinion, it's a great language for accelerate development throughput and a real motivational language to users that use classical languages.
For new programmers, maybe. I think C have a well-behaved syntax that helps to develop algorithmic knowledge and helps to discipline your mind when treating a problem. Python have to much ready-to-use facilities and if you don't use an IDE to help you, it's very difficult to maintain an order over lines and lines of code.
Well, if you want to learn programming Python this is my recommendations:
- READ THE MANUAL : No one reads the manual for nothing, but documentation is a really great source for solving problems. Google for Python Doc and be happy.
- Learn using examples : There is nothing more rewarding than programming with a greater objective in mind. Take a time to search for great applications (a game, for example) and learn the language to achieve your goals.
- Use an IDE : You want to be a hardcore coder? It's your problem. If you want to improove your code organization, use an IDE (NINJA-IDE is my recommendation). If not, at least use a text editor with syntax highlighting (gedit, Notepad++, Notepad!).
- "Don't worry about a thing, cause everything is gonna be alright"
Hope you enjoyed! If you liked, share!
SongSpot #6
This week, again ThePianoGuys. Awesome clips from two great medleys/mashups:
Let It Go (Disney's "Frozen") Vivaldi's Winter
Titanium / Pavane (Piano/Cello Cover) - David Guetta / Faure
Hope you enjoy it! \o
Let It Go (Disney's "Frozen") Vivaldi's Winter
Titanium / Pavane (Piano/Cello Cover) - David Guetta / Faure
Hope you enjoy it! \o
sexta-feira, 11 de abril de 2014
SongSpot #5
Remembering two french songs that I like for no special meanings, I think...maybe...I don't know at all uhauha
Both great songs feat. Joyce Jonathan and Gregòire. Hope you enjoy!
Joyce Jonathan - Je ne sais pas
Gregòire - Toi + Moi
Both great songs feat. Joyce Jonathan and Gregòire. Hope you enjoy!
Joyce Jonathan - Je ne sais pas
Gregòire - Toi + Moi
Assinar:
Postagens (Atom)