11:33

Java Yaz Okulu


Bu dönem 2.si düzenlenen ve belirli kiriterlere göre seçilen öğrencilerle yapılan java yaz okulluna seçilmiş bulunmaktayım. Sanırım 16 temmuzdan sonra size anlatacağım bir çok şey olacak...

12:58

Real-Time Shared Editing

video eğlenceli ve gerçekten işe yarıyor...

Cola: Real-Time Shared Editing from Mustafa K. Isik on Vimeo.

17:19

Interactive Data Structure Visualizations

Binary Tree Traversals çok güzel anlatılmış ve açıkçası geliştirmiş oldukları program çok güzel size hem kendiniz çözmenizi hemde çözümün nasıl olduğunu anlatıyor ben datastructure alırken görmüş olsaydım kesinlikle kullanırdım ki çok sonralarda algoritmada karşıma çıktı ve hatırlamama yardımcı oluyor.



06:40

Parallel Computing

HelloWord for Parallel Computing

/*
============================================================================
Name : ads.c
Author :
Version :
Copyright : Your copyright notice
Description : Hello MPI World in C
============================================================================
*/
#include
#include
#include "mpi.h"

int main(int argc, char* argv[]){
int my_rank; /* rank of process */
int p; /* number of processes */
int source; /* rank of sender */
int dest; /* rank of receiver */
int tag=0; /* tag for messages */
char message[100]; /* storage for message */
MPI_Status status ; /* return status for receive */

/* start up MPI */

MPI_Init(&argc, &argv);

/* find out process rank */
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);

/* find out number of processes */
MPI_Comm_size(MPI_COMM_WORLD, &p);


if (my_rank !=0){
/* create message */
sprintf(message, "Hello MPI World from process %d!", my_rank);
dest = 0;
/* use strlen+1 so that '\0' get transmitted */
MPI_Send(message, strlen(message)+1, MPI_CHAR,
dest, tag, MPI_COMM_WORLD);
}
else{
printf("Hello MPI World From process 0: Num processes: %d\n",p);
for (source = 1; source < p; source++) {
MPI_Recv(message, 100, MPI_CHAR, source, tag,
MPI_COMM_WORLD, &status);
printf("%s\n",message);
}
}
/* shut down MPI */
MPI_Finalize();


return 0;
}

bu hazır geliyor Open MPI ile :) şuan labdayım yah

06:38

Parallel Computing

/*
============================================================================
Name : lab.c
Author :
Version :
Copyright : Your copyright notice
Description : Array in elemanlarını toplayan C kodu
============================================================================
*/
#include
#include
#include "mpi/mpi.h"

int main(int argc, char* argv[]){
int my_rank; /* rank of process */
int p; /* number of processes */
int i;
int allsum =0;

MPI_Init(&argc, &argv);
MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);
MPI_Comm_size(MPI_COMM_WORLD, &p);

int vector[10];
int arr[500];
int arrr[500];
int as = 500 / p;

if (my_rank == 0){
for (i = 0; i < 500; i++)
arr[i] = i;
}

MPI_Scatter(arr, as, MPI_INTEGER, arrr, as, MPI_INTEGER, 0, MPI_COMM_WORLD);


int sum = 0;

for (i = 0; i < as; i++)
sum += arrr[i];

printf("Myrank: %d, sum: %d\n", my_rank, sum);

MPI_Reduce(&sum, &allsum, 1, MPI_INTEGER, MPI_SUM, 0, MPI_COMM_WORLD);

//MPI_Gather(&sum, 1, MPI_INTEGER, vector, 1, MPI_INTEGER, 0, MPI_COMM_WORLD);



if (my_rank == 0)
{
printf("%d ", allsum);
}


MPI_Finalize();


return 0;
}

05:39

YAZILIM MÜHENDİSLİĞİ

Öğrenci seçme ve yerleştirme sınavı yapıldı. Sonrasında tercihler yapıldı. kimse bir yerlere yerleşemedi. Sırada ne var ek yerleştirmeler. Bugün bana gelen bir maille bölümüm hakkında Yani Yazılım Mühendisliği hakkında bir yazı yazmam gerektiğin ve benden sonra bu bölümü seçecekler için az da olsa bu yazının yol gösterici olması gerektiğini anladım.
Yazılım mühendisliği bölümünün daha önce yapılmış bir çok tanımı var genel anlamda “Yazılım Mühendisliği 1968 yılında NATO tarafından gerçekleştirilen bir konferans esnasında ortaya çıkan yeni bir kavram ve yeni bir mühendislik alanı olup, yazılım sistemlerinin mühendislik prensipleri çerçevesinde tasarımı, üretimi ve işletilmesini hedeflemektedir. Bilgisayar sistemleri artık günlük hayatın her alanında yoğun ve etkin bir şekilde kullanılmakta olduğundan, Yazılım Mühendisliği tüm disiplinlerde uygulamaları olan bir alan.
- Kullanıcı ihtiyaçlarını analiz ederek, uygun çözümlere tasarlayabilmek,
- Kullanıcının belirlediği fakat genelde sürtüşmelere yol açan zaman, maliyet, kullanılabilirlik noktalarında uzlaşma sağlayabilmek,
- Mühendislik yaklaşımlarını kullanırken etik, sosyal, yasal ve ekonomik ilgileri bütünleştirecek uygun çözümler tasarlamak.
- Yazılım tasarımı, geliştirilmesi, gerçekleştirimi ve doğrulanması için bir temel sağlayan mevcut teorileri, modelleri ve teknikleri anlamak ve uygulayabilmek.
- Yazılım geliştirme ortamında etkin olarak çalışmak, gerekli olduğunda liderlik yapabilmek ve kullanıcılarla iyi iletişim kurabilmek bir diğer deyişle proje yönetimi becerisi.
- İlgili alanlardaki gelişmeleri takip edip, uygulayabilmek” yazının tamamı için (http://www.csharpnedir.com/articles/read/?id=230)
Yazılım mühendisliği bilgisayar mühendisliğine nazar daha az donanım derslerine sahip ortak olarak alınan programlama derslerini yanı sıra daha çok bir yazılım mühendisliği müşterinin istediği veya ihtiyaç doğrultusunda en iyi şekilde nasıl yapılabilir? nasıl yönetilebilir? gibi dersleri içermektedir. 4 yıl boyunca bir yazılım mühendisliği bölümünden alınacak yazılım dersleri programı
1) SE 112 - Yazılım Mühendisliğine Giriş
2) İnsan Bilgisayar Etkileşimi
3) Yazılım Kalite Güvencesi
4) Sistem Yazılımının Sınanması ve Onaylanması
5) Yazılım Gereksinimleri Mühendisliği
6) Yazılım Tasarımı ve Mimarisi
7) Nesneye Dayalı Analiz ve Tasarım
8) Yazılım Proje Yönetimi
9) Sistem Modelleme ve Simülasyon
10) Büyük Ölçekli Sistem Yazılımı Geliştirme (www.atilim.edu.tr)
Gibidir. Bu derslerin konusu ve içeriği IEEE(http://ieeesb.gantep.edu.tr/intro.htm) tarafından hazırlanmaktadır.
İş imkanına gelince Yazılım mühendisliği bölümü Türkiye de çok yeni bir bölüm ve bu sene ilk mezunlarını verdi. Gün geçtikçe değerlenen bir bölümdür. Ama ne yazık ki Türkiye de ve genel anlamda oluşan krizden dolayı bilişim sektöründe de bir durgunluk söz konusu. Eleman sıkıntısı çok fazla ama iş yapan firma sayısı çok az. İş yapabilecek firma sayısı çok az. Birde bazı gerçekler var. Bugün firmalar 10 kuruşa bir iş yaptırmak yerine bu işin sertifikasını almış yada 2 yıllık bir programdan mezun olmuş elamana 3 kuruş verip ona yaptırmayı daha doğru buluyor. Buda mezunların iş bulma şansını birazda olsa aşağı çekiyor. Bir alanda uzmanda değil de her şeyden anlayan eleman çalıştırmaya daha az para vermeye çalışıyorlar. Bir başka gerçek bu gün büyük ölçekli yazılım firmalarında yine bir Türkiye gerçeği olan “torpil ”olayı çok fazla. Eğer size yardımcı olacak bir dayınız yoksa bu firmalar da çalışma imkanınız yok denecek kadar az. Bu durumda okul biter bitmez kurslara devam ediyor olabilirsiniz network, database veya yazılım alanında bir sertifika programına kaydolarak alacağınız bu belgelere den biriyle birazda olsa iş bulma şansınızı artırabilirsiniz. Sormak istedikleriniz için bana mail atabilirsiniz. Son olarak aşağıda Atılım Üniversitesi Yazılım Mühendisliği Bölümü Başkanı Sayın Ali YAZICI nın CNN Türk’e yapmış olduğu söyleşi var izlemenizi kesinlikle tavsiye ederim.

Herkese Kolay gelsin.
Mesut ALTINYAPRAK


2010.05.25 CNN Türk BaÅ�arıya DoÄ�ru Prof.Dr. Ali Yazıcı
Yükleyen atilim_universitesi. - Partiler, yurt hayatı ve diÄ�er üniversite videoları.

15:16

Nesne yönelimli Programlama (Object-Oriented Programming) Tekniği ve C++

Nesne yönelimli Programlama (Object-Oriented Programming) Tekniği ve C++

Bugün pek çok yüksek seviyeli programlama dilleri bu tekniği desteklemektedir. O yüzden bu yaz elimden geldiğince ana başlıklar dan yola çıkarak C++ nedir nedeğildir iyice ararşıtırırken öğrendiklerimide sizinle paylaşmak istedim. Şimdi genel özellikleriyle C++ diyelim ve başlayalım.

1- c++'ta Local değişkenlerin bildirimleri blokların başında yapılmak zorunda değildir. Yani
{} aç kapa yaptıktan sonra nerde isterseniz değişkenleri tanımlayabilirsiniz.

2- c++'ta Local değişkenin faaliyet alanı bildirim noktasından blok sonuna kadar olan bölgeyi kapsar. Ne olursa olsun bir blok içersinde aynı isimli birden fazla değişken bildirimi yapılamaz.

3- for döngüsünün birinci kısmında bildirim yapılabilir. Ve etkinliği for döngüsün içinde bulunduğu bloğun sonuna kadar etkilidir.
Örn: For( int i=0; i<=length; i++)

4- while ve if döngleri içersinde tanımlama yapılamaz.

5- DEFİNATİON için küçük bir örnek.

#include
#define SIZE 100

void main () {
for (int i=0; iprintf(“The numbers %d \n ”,i)
return 0;
}

6- if, for, switch, while gibi deyimlerden sonra blok açılmamış olsa bile gizli bir blogun açıldığı düşünülmelidir.

7- // ile satır sonuna kadar yorum yapılabilinir.
/* */ arasında kalan herşey yorum olarak kabul eder.

8- Çağrılan fonksiyon eğer çağıran fonksiyonun yukarısında tanımlanmamışsa fonksiyon prototipi zorunludur.

9-farklı parametre yapılarına sahip aynı isimli birden fazla fonksiyon tanımlanabilir.

Örn: void mesut (int x){ }
void mesut (void) {}
burada çağrılma (call) ifadesindeki parametre sayısı ve türü hangisine uygunsa o çağrılmış olur. Geri dönüş değerinin farklı olması aynı isimli fonksiyon yazmak için yeterli değildir.
Yani, geri dönüş değerleri farklı fakat parametre yapısı aynı olan birden fazla fonksiyon tanımlanamaz.

10- C++ derleyicisi aynı sayıda parametrelere sahip birden fazla aynı isimli fonksiyonun bulunması durumunda çağrılma ifadesine tür bakımından uygun bir fonksiyon bulamazsa bu durum “Ambiguity between fonk(int) and fonk (long) bunun bir diğer ismi iki anlamlılık hatasıdır.
Örneğin: fonksiyon float parametreyle çağrılmışsa ancak float parametreye sahip bir fonksiyon yoksa double parametreye sahip bir foksiyon tanımlanmışsa bu durumda double parametreye sahip olan foksiyon çağrılır.

11- tanımlanan ve çağrılan bir fonksiyon ismi .obj modül içersine yazılmak zorundadır. Buda içiersinde aynı isimli birden çok fonksiyon modülü içersine yazılamaz demeketir.

12- Dinamik bellek yönetimi new ve delete operatörleriyle yapılır. Ve bu malloc, claloc, realloc ve free fonksiyonlarıyla yapılabilir. Ancak bu fonksiyonlar OOP yönelimliprogramlama tekniği uygulayabilmek için tasarlanmıştır.

13- C++'ta dinamik olarak tahsis edilme potansiyelindeki boş bölgelere free store denilmektedir. C dilinde ise HEAP denir.

14- NEW Operatörü:

new(TÜR) [<[UZUNLUK]>]

new int
new char
new double [100] gibi
int *p;
p= new int;

Exam:

#include
#include
{
char *p;
p =new char[100];
cin>>p;

for(int i=0; i<100; i++);
cout<}

Exa: Tam olarak ad, soyad uzunluğu kadar bellekte yer ayıran fonksiyon
#include
#include
char *getname(void)
{
char *p;
char buf[100];
printf(”Name and Surname”);

gets(buf);

p=new char [strlen(buf)+1];
if(p==NULL){

printf(“Cannot allocate memory..\n”);
return 1;
}
strcpy (p.buf)
return p;
}

void main (){
char *p;
p=getname();
puts(p);
}

15- Delete operatörü new opratörü ile memory de yar açılmış olan blokların serbest bırakılması için kullanılır 2 şekilde kullanımı vardır

delete p; tek member için
delete [] p; birden fazla member için

16- Bir adresin farklı türden bir pointer'a ve adres olmayan bir bilginin bir pointer'a atanması durumu error olarak değerlendirilir. Yani adres işlemlerinde tür uyuşmazlığı C++'ta eror olarak değerlendirilir.

Örn;
void main (){

int s[10];
chat *t;

t=s ; // dediğin anda cannot conver int to char hatası alırsın.
Ama
t=(char *)s ; // hata vermez.

17- const bir değişkenin adresi ancak const bir pointer'a atanmalıdır.

const int x;
int *y;
const int *p;
y=&x; // HATALI dır.
p=&x;// DOĞRU dur.

18- const bildirimi ile yaratılmış bir değişken sabit ifadesi gibi işlem görür. Const bir değişken için yine bellekte yer ayrılır. Const ilk değeri aldığı Ya da atandığı andan itaberen o değişkeni kullanır.

Örn: const int MAX=y+8;
const int MIN=0;
x=MAX;
x=MIN;
const int SIZE =10;
int y[SIZE];

const değişken için bellekte yer ayrılır. Bu durumda const değişkenin adresi alınabilinir.

Void main (){
const SIZE=100;
int *p;
p=(int *)&SIZE;
*p=20;
printf(“%d/n”.SIZE);
}

19- Statik ömürlü değişkenlere sabit ifadesiyle ilk değer atama zorunluluğu yoktur. C'de vermek zorundayız. Çünkü static değişkenler il değer içersine yazılır. Exe dosyası içersinde yer alırlar. Bunun mümkün olabilmesi için verilen ilk değerin derleme aşamasında belirlenmiş olması gerekir. C++'ta static değişkenlere her türden öylesine bir değer verilebilinir. Bu değişkenler 0 ilk değeriyle amaç koda yazılırlar. Programın çalışma zamanı sırasında ve main fonksiyonundan önce ilk değerlerini alırlar.