💻 Bilgisayar

Makine Kodu ile Red Alert 3 Yazdık

Tamam tamam yazmadık. Abarttım ben.

Ama ASM ile yılan oyunu yaptık. 8051 serisi mikrodenetleyicilerde çalışacak bir yılan oyunu. Sırf ASM ile.

Vallahi boş işler yapmıyoruz. Ödev bu, ondan yaptık. 😀

Evet C gibi bir dil varken, bizden inatla ASM’de yazmamızı istediler, yanlış anlamadınız.

Yo yo, C’yi derste de gördük. Gösterdiler yani. Ama yine de inatla ASM’de yazmamızı istediler.

Vallahi ben anlamadım mantığını. Nedenini sordum, “Biz öyle uygun gördük.” dediler.

Cidden.

Hiçbir okurumu inandıramadım. Özlem’e sorun. İnanırsınız. Zaten takım arkadaşım da o. Kod yazdığıma falan inanmazsanız ona da inandırır.

Ödev

Her neyse… ASM ile bizden oyun istediler. Derste C görmemize rağmen hem de. Uğraşmazsak olmaz ya!

Biz de tasarladık. Net 15 saatimizi aldı. Hata ayıklarken canımız çıktı. Programı yazarken bize derste gösterilen Linux üzerinde çalışan MCU IDE isimli yazılımı kullandık. Ama program öyle yavaş ve öyle sorunluydu ki, defalarca çöktüğü gibi, mikrosaniyelik işi yapması saniyeler alıyordu. Yani görüp görülebilecek en kötü IDE’lerden biriydi.

En az beş altı defa çöktü. Ve biz bu IDE’de yılan yazdık!

Daha doğrusu yazamadık ve bir süre sonra FxDev’den yardım isteyince, bize Windows’ta çalışan ve adam gibi çalışan, orası burası çökmeyen ve yazdığımız kodu 8051’e göre gerçekzamanlı işleyebilen bir yazılım önerdi: Keil uVision.

Kodu hemencecik Windows’a taşıdık ve bu programda tasarıma devam ettik. Canımız çıka çıka, saya söve ödevi bitirdik.

Kontrol

Ödev kontrolünde hocamız bize bu ödevin bize ne kattığını sordu. Ben de açık açık söyledim kendisine: “Açıkçası üç günümüzü boşa harcamaktan başka bir şey katmadı.” Meğerse öyle değilmiş… Bu ödev bize, eğer ileride alt seviyeli işlerle meşgul bir yerde çalışırsak (mesela embedded) o zaman işlerin nasıl gittiğine dair fikrimiz olmasını sağlayacakmış.

Kimse bu ödevi vermeden önce, gelecekte ne yapacağımı sormadı ki bana! Ben gelecekte alt seviyeyle falan uğraşmayacağım, “webci” olacağım ben, ben niye yapıyorum o zaman? Bunun cevabı yok tabi. Aslında var: Finali %20 etkiliyor da ondan yapıyorum.

Neyse, böyle bir ödevi yaptık.

Teknik Bilgiler

Biraz da teknik bilgi verelim şimdi.

  • Program klasik bir yılan oyunudur.
  • Oyun 40H ile 7FH bellek bölgeleri arasında oynanmaktadır.
  • Elmalar 0FFH’tir.
  • Yılan’ın başı 01H ve devamı 02H, 03H.. diye gitmektedir.
  • Veriler Port 0’dan alınır.
  • 0.0 sol, 0.1 sağ, 0.2 yukarı, 0.3 aşağı yönlerini kontrol eder. Aynı anda iki tane girişe basılmamalıdır. Basılırsa sistem bir tanesini kabul eder, diğerini yok sayar.
  • 0.4 yılanı yavaşlatır, 0.5 hızlandırır.
  • Yılanı kontrol etmek için yön tuşuna sürekli basmanız gerekmemektedir. Hiçbir tuşa basmazsanız aynı yönde devam eder.
  • Yılan sola giderken bir anda sağa gidemez. (180 derece dönüş olmaz.)
  • Oyun tahtasında sınır yoktur. Bir taraftan çıkınca öbür taraftan girer.
  • Elmalar, T1 zamanlayıcısındaki MOD2 sayacı ile rastgele üretilir.
  • T0, MOD1 yılanın hızını ayarlamak için kullanılır.
  • Oyun yılan kendine çarpınca biter.
  • Çarpışmanın olduğu yer 0FEH ile gösterilir.
  • Skor oyunun sonunda bilumum registerlara ve aküye yazılır.
  • Skor, yenilen elma sayısıdır.
  • Elmalar GDO’lu değildir.

Bitirirken

Bu kadar incik cıncık özelliği olan bir ödevi, zaten kısıtlı ve değerli olan vaktimizde bize yaptırılmasının yanlış olduğunu düşündüğümü tekrar söylemeden geçemiyor ve oyunun ödev metinini, raporumuzu ve kaynak kodumuzu aşağıda paylaşıyorum.

Teknik birkaç ayrıntıya rapordan ulaşabilirsiniz.

Kaynak kodları (olur da anlarsanız 😀 ) istediğiniz gibi kullanabilirisiniz. Kodları indirmek istemezseniz her zamanki gibi yazının sonunda bulabilirsiniz.

Kodlar

; YILANIN BASINI KUCUKKEN EZECEKSIN YEGEN (16:1 )
MOV 63H, #001H ;YILANIN BASLANGIC KONUMU
MOV 64H, #002H ;YILANIN BASLANGIC KONUMU
MOV R2, #00H   ; YILANIN GIDECEGI YON 00H:sol, 01H:sag, 02H:ust, 03H:alt -Default olarak soldan baslatilir.-
MOV R6, #002H  ;YILANIN BASLANGIC UZUNLUGU
MOV 008H, #0100D  ;BASLANGIC HIZI

; ZAMANLAYICIYA AIT SURUYLE KOD
BASLA:
MOV R7, 008H ;Baslangic hizi R7 registerina atilir. 

ZAMANLAYICI:
MOV 16H, #0FFH
IC_ZAMANLAYICI:
MOV TMOD, #00100001B ;ZAMANLAYICI 1 MOD2'DE ZAMANLAYICI ZAMANLAYICI 0 MOD 1'DE
MOV TH0, #0FFH ;Zamanlayici 0'ın donme sayisi TH0 ve TL0 ile ayarlanir.
MOV TL0, #0FFH
MOV TH1, #63D ;Zamanlayici 1'in donme sayisi TH1 ve TL1 ile ayarlanir.
MOV TL1, #63D
SETB TR0 ; Zamanlayici 0 calismaya baslar.
SETB TR1 ; Zamanlayici 1 calismaya baslar.

; YILAN HIZINA GORE BEKLEMEK
BEKLE: JNB TF0, BEKLE 
CLR TF0 
DJNZ 16H, IC_ZAMANLAYICI

DJNZ R7, ZAMANLAYICI



; EKRANA RASTGELE ELMA KOYMA (ELMALAR FFH)
; GUNCEL ELMANIN YERI O9H ADRESINDE TUTULUR. BU ADRESTE 00 VARSA ELMA YOK DEMEKTIR.
; EGER ELMA YOKSA BIR TANE RASTGELE YARATILIR VE BELLEGE FFH OLARAK ISLENIR.

MOV A, 09H
JNZ PORT_KONTROL

  MOV A, R6
  SUBB A, #64D
  JNZ ELMA_YARAT
  LJMP BITTI

  ELMA_YARAT: ;ELMA YARAT
  MOV R0, TL1;SAYACTAKI DEGERI (YENI ELMA KOORDINATINI AL)
  MOV A,@R0 ;ELMANIN OLUSTURULMASI DUSUNULEN NOKTANIN ICI A'YA ATILIR.
            ;BU NOKTADA 00H DISINDA BIR SEY VARSA, YILANIN USTUNDE ELMA OLUSTUYORUZ DEMEKTIR.
  JNZ ELMA_YARAT
	;BU NOKTADA ARTIK ELMAYI YARATABILIRIZ
  MOV @R0, #0FFH
  MOV 09H, R0
  JMP PORT_KONTROL


; PORTTAN BILGI ALIP GIDILECEK YONE KARAR VERMEK VEYA HIZ ARTIRIP AZALTMAK
PORT_KONTROL:
MOV P0, #0FFH ;P0 giris portu olarak ayarlanir.
MOV C, P0.0 ; Yilanin sola donmesi isteniyorsa
JNB CY, SOLL 
MOV C, P0.1 ;Yilanin saga donmesi isteniyorsa
JNB CY, SAGL 
MOV C, P0.2 ;Yilanin yukari cikmasi isteniyorsa
JNB CY, USTL
MOV C, P0.3 ;Yilanin asagi inmesi isteniyorsa
JNB CY, ALTL
MOV C, P0.4 ;Yilan hizlandirilmak isteniyorsa
JNB CY, HIZLANDIR
MOV C, P0.5 ;Yilan yavaslatilmak isteniyorsa
JNB CY, YAVASLAT

; YON BELIRTILMEMISSE (YANI HIC GIRDI YOKSA, EN SON NEREYE GIDILIYORSA ORAYA GITMEYE DEVAM ETMEK)
YONBELIRTILMEMIS:
	CJNE R2, #00H, YON_SOL_DEGIL ; Bir onceki yonun ne olduguna bakilir, teker teker. Yukarida aciklanan kabullenmeler kullanilir.
	JMP SOLL
	YON_SOL_DEGIL:
	CJNE R2, #01H, YON_SAG_DA_DEGIL
	JMP SAGL
	YON_SAG_DA_DEGIL:
	CJNE R2, #02H, YON_UST_DEGIL
	JMP USTL
	YON_UST_DEGIL:
	JMP ALTL
	
HIZLANDIR:	;Yilan hizlandiriliyor...
	MOV A, 008H 
	CLR C
	SUBB A, #20D
	MOV 008H, A
	JNZ BASLA
	MOV 008H, #20D
	JMP BASLA
YAVASLAT: ;Yilan yavaslatiliyor...
	MOV A, 008H
	ADD A, #20D
	MOV 008H, A
	CLR CY
	SUBB A,#0F0H
	JNZ LBASLA
	MOV 008H, #0DCH
	LJMP BASLA
LBASLA:	LJMP BASLA
;Asagida, yilan belli bir yone giderken tam ters yon secilmisse, secilen yonun ignore edilip yilanin gittigi yonde devam etmesi saglanmistir.
;Ters yonden kastimiz, yilan sola giderken saga gitmesinin istenmesi ya da yilan yukari cikarken asagi gitmesinin istenmesidir.
;Boyle bir durumda yilan yon secimi hic yapilmamis gibi gittigi yonde devam eder.
SOLL: 	CJNE R2, #01H, SOLDAN_DEVAM_ET 
	LJMP SAG
	SOLDAN_DEVAM_ET:
	MOV R2, #00H
	LJMP SOL
SAGL: 	CJNE R2, #00H, SAGDAN_DEVAM_ET
	LJMP SOL
	SAGDAN_DEVAM_ET:
	MOV R2, #01H 
	LJMP SAG
USTL: 	CJNE R2, #03H, USTTEN_DEVAM_ET
	LJMP ALT
	USTTEN_DEVAM_ET:
	MOV R2, #02H 
	LJMP UST
ALTL:	CJNE R2, #02H, ALTTAN_DEVAM_ET
	LJMP UST
	ALTTAN_DEVAM_ET:
	MOV R2, #03H 
	LJMP ALT
SOL:
	;YILAN HAREKETLERI
	MOV R5, #001H
	
	;YILANIN BASINI BUL (BULUNACAK OLAN YE R5'E ATILMALIDIR)
	MOV R0, #040H
	BAS_SOL_ARA:
	MOV A,@R0
	CJNE A, 005H, BAS_SOL_YOK
	
	JMP BAS_SOL_VAR
	
	BAS_SOL_YOK:
	INC R0
	JMP BAS_SOL_ARA
	
	BAS_SOL_VAR:
	;R0'IN ICERISINDE YILANIN BIYERI VAR.
	
	HAREKET_SOL:
	MOV @R0, #0FEH
	
	; KOSELERE GELMIS MI KONTROLLERI (SOL)
	; Her kose teker teker kontrol edilir ve yilanin duvardan gecmesi saglanir.
	MOV A,#40H
	CJNE A, 00H, YOK40_SOL
		MOV R0, #47H
		JMP SOL_TAMAM
	YOK40_SOL:
	MOV A,#48H
	CJNE A, 00H, YOK48_SOL
		MOV R0, #4FH
		JMP SOL_TAMAM
	YOK48_SOL:
	MOV A,#50H
	CJNE A, 00H, YOK50_SOL
		MOV R0, #57H
		JMP SOL_TAMAM
	YOK50_SOL:
	MOV A,#58H
	CJNE A, 00H, YOK58_SOL
		MOV R0, #5FH
		JMP SOL_TAMAM
	YOK58_SOL:
	MOV A,#60H
	CJNE A, 00H, YOK60_SOL
		MOV R0, #67H
		JMP SOL_TAMAM
	YOK60_SOL:
	MOV A,#68H
	CJNE A, 00H, YOK68_SOL
		MOV R0, #6FH
		JMP SOL_TAMAM
	YOK68_SOL:
	MOV A,#70H
	CJNE A, 00H, YOK70_SOL
		MOV R0, #77H
		JMP SOL_TAMAM
	YOK70_SOL:
	MOV A,#78H
	CJNE A, 00H, YOK78_SOL
		MOV R0, #7FH
		JMP SOL_TAMAM
	YOK78_SOL:
	DEC R0

	SOL_TAMAM:
	;OYUN SONU VE YILAN ELMA YEDI MI KONTROLLERI
	MOV A, @R0
	JNZ SOL_BUYU
	JMP SOL_ILERI
	SOL_BUYU: ; Yilanin buyumesi lazım. 
	CLR C
	SUBB A, #0FFH
	JNZ SOL_BITTI
	MOV 010H, #0FFH ;BUYU BAYTINI SET ET
	JMP SOL_ILERI
	SOL_BITTI: ;Yilanin boyunun 8 olmasi durumunda bir sirada yuruyebilmesinin saglanmasi amaciyla yazilmis bir dizi kod...
	MOV A, @R0 
	CLR C
	SUBB A, R6
	JNZ SOL_CIDDEN_BITTI
	MOV 011H, #0FFH	;YILAN TAM UCTA BAYTINI SET SET
	JMP SOL_ILERI

	SOL_CIDDEN_BITTI:
	LJMP BITTI
	
	SOL_ILERI:
	MOV @R0, #001H

	
	;DEGISECEK BITTI
	
	MOV R4, #002H ; BIR SONRAKI YILANIN YERI (SBIZLEYE PARAMATRE OLARAK KULLANDIK)
	JMP SBIZLE

SAG:
	;YILAN HAREKETLERI
	MOV R5, #001H
	
	;YILANIN BASINI BUL (BULUNACAK OLAN YE R5'E ATILMALIDIR)
	MOV R0, #040H
	BAS_SAG_ARA:
	MOV A,@R0
	CJNE A, 005H, BAS_SAG_YOK
	
	JMP BAS_SAG_VAR
	
	BAS_SAG_YOK:
	INC R0
	JMP BAS_SAG_ARA
	
	BAS_SAG_VAR:
	;R0'IN ICERISINDE YILANIN BIYERI VAR.
	
	HAREKET_SAG:
	MOV @R0, #0FEH
	
	; KOSELERE GELMIS MI KONTROLLERI (SAG)
	; Her kose teker teker kontrol edilir ve yilanin duvardan gecmesi saglanir.
	;DEGISECEK BASLA
	MOV A,#47H
	CJNE A, 00H, YOK47_SAG
		MOV R0, #40H
		JMP SAG_TAMAM
	YOK47_SAG:
	MOV A,#4FH
	CJNE A, 00H, YOK4F_SAG
		MOV R0, #48H
		JMP SAG_TAMAM
	YOK4F_SAG:
	MOV A,#57H
	CJNE A, 00H, YOK57_SAG
		MOV R0, #50H
		JMP SAG_TAMAM
	YOK57_SAG:
	MOV A,#5FH
	CJNE A, 00H, YOK5F_SAG
		MOV R0, #58H
		JMP SAG_TAMAM
	YOK5F_SAG:
	MOV A,#67H
	CJNE A, 00H, YOK67_SAG
		MOV R0, #60H
		JMP SAG_TAMAM
	YOK67_SAG:
	MOV A,#6FH
	CJNE A, 00H, YOK6F_SAG
		MOV R0, #68H
		JMP SAG_TAMAM
	YOK6F_SAG:
	MOV A,#77H
	CJNE A, 00H, YOK77_SAG
		MOV R0, #70H
		JMP SAG_TAMAM
	YOK77_SAG:
	MOV A,#7FH
	CJNE A, 00H, YOK7F_SAG
		MOV R0, #78H
		JMP SAG_TAMAM
	YOK7F_SAG:
	INC R0
	
	SAG_TAMAM:
	;OYUN SONU VE YILAN ELMA YEDI MI KONTROLU
	MOV A, @R0
	JNZ SAG_BUYU
	JMP SAG_ILERI
	SAG_BUYU:
	CLR C
	SUBB A, #0FFH
	JNZ SAG_BITTI
	MOV 010H, #0FFH ;BUYU BAYTINI SET ET
	JMP SAG_ILERI
	SAG_BITTI: ;Yilanin boyunun 8 olmasi durumunda bir sirada yuruyebilmesinin saglanmasi amaciyla yazilmis bir dizi kod...
	MOV A, @R0 
	CLR C
	SUBB A, R6
	JNZ SAG_CIDDEN_BITTI
	MOV 011H, #0FFH	;YILNAN TAM UCTA BAYTINI SET SET
	JMP SAG_ILERI

	SAG_CIDDEN_BITTI:
	LJMP BITTI
	
	SAG_ILERI:
	MOV @R0, #001H

	
	;DEGISECEK BITTI
	
	MOV R4, #002H ; BIR SONRAKI YILANIN YERI (SBIZLEYE PARAMATRE OLARAK KULLANDIK)
	JMP SBIZLE

UST:
	;YILAN HAREKETLERI
	MOV R5, #001H
	
	;YILANIN BASINI BUL (BULUNACAK OLAN YE R5'E ATILMALIDIR)
	MOV R0, #040H
	BAS_UST_ARA:
	MOV A,@R0
	CJNE A, 005H, BAS_UST_YOK
	
	JMP BAS_UST_VAR
	
	BAS_UST_YOK:
	INC R0
	JMP BAS_UST_ARA
	
	BAS_UST_VAR:
	;R0'IN ICERISINDE YILANIN BIYERI VAR.
	
	HAREKET_UST:
	MOV @R0, #0FEH
	
	; KOSELERE GELMIS MI KONTROLLERI (UST)
	; Her kose teker teker kontrol edilir ve yilanin duvardan gecmesi saglanir.
	MOV A,#40H
	CJNE A, 00H, YOK40_UST
		MOV 78H, #001H
		JMP UST_TAMAM
	YOK40_UST:
	MOV A,#41H
	CJNE A, 00H, YOK41_UST
		MOV R0, #79H
		JMP UST_TAMAM
	YOK41_UST:
	MOV A,#42H
	CJNE A, 00H, YOK42_UST
		MOV R0, #7AH
		JMP UST_TAMAM
	YOK42_UST:
	MOV A,#43H
	CJNE A, 00H, YOK43_UST
		MOV R0, #7BH
		JMP UST_TAMAM
	YOK43_UST:
	MOV A,#44H
	CJNE A, 00H, YOK44_UST
		MOV R0, #7CH
		JMP UST_TAMAM
	YOK44_UST:
	MOV A,#45H
	CJNE A, 00H, YOK45_UST
		MOV R0, #7DH
		JMP UST_TAMAM
	YOK45_UST:
	MOV A,#46H
	CJNE A, 00H, YOK46_UST
		MOV R0, #7EH
		JMP UST_TAMAM
	YOK46_UST:
	MOV A,#47H
	CJNE A, 00H, YOK47_UST
		MOV R0, #7FH
		JMP UST_TAMAM
	YOK47_UST:
	CLR C
	MOV A,R0
	SUBB A, #8H
	MOV R0,A

	UST_TAMAM:

	;OYUN SONU VE YILAN ELMA YEDI MI KONTROLU
	MOV A, @R0
	JNZ UST_BUYU
	JMP UST_ILERI
	UST_BUYU:
	CLR C
	SUBB A, #0FFH
	JNZ UST_BITTI ;Yilanin boyunun 8 olmasi durumunda bir sirada yuruyebilmesinin saglanmasi amaciyla yazilmis bir dizi kod...
	MOV 010H, #0FFH ;BUYU BAYTINI SET ET
	JMP UST_ILERI
	UST_BITTI:
	MOV A, @R0 
	CLR C
	SUBB A, R6
	JNZ UST_CIDDEN_BITTI
	MOV 011H, #0FFH	;YILNAN TAM UCTA BAYTINI SET SET
	JMP UST_ILERI

	UST_CIDDEN_BITTI:
	LJMP BITTI
	
	UST_ILERI:
	MOV @R0, #001H
	;DEGISECEK BITTI

	
	MOV R4, #002H ; BIR SONRAKI YILANIN NOSU (SBIZLEYE PARAMATRE OLARAK KULLANDIK)
	JMP SBIZLE

ALT:
	;YILAN HAREKETLERI
	MOV R5, #001H
	
	;YILANIN BASINI BUL (BULUNACAK OLAN YE R5'E ATILMALIDIR)
	MOV R0, #040H
	BAS_ALT_ARA:
	MOV A,@R0
	CJNE A, 005H, BAS_ALT_YOK
	
	JMP BAS_ALT_VAR
	
	BAS_ALT_YOK:
	INC R0
	JMP BAS_ALT_ARA
	
	BAS_ALT_VAR:
	;R0'IN ICERISINDE YILANIN BIYERI VAR.
	
	HAREKET_ALT:
	MOV @R0, #0FEH
	
	; KOSELERE GELMIS MI KONTROLLERI (ALT)
	; Her kose teker teker kontrol edilir ve yilanin duvardan gecmesi saglanir.
	;DEGISECEK BASLA
	MOV A,#78H
	CJNE A, 00H, YOK78_ALT
		MOV R0, #40H
		JMP ALT_TAMAM
	YOK78_ALT:
	MOV A,#79H
	CJNE A, 00H, YOK79_ALT
		MOV R0, #41H
		JMP ALT_TAMAM
	YOK79_ALT:
	MOV A,#7AH
	CJNE A, 00H, YOK7A_ALT
		MOV R0, #42H
		JMP ALT_TAMAM
	YOK7A_ALT:
	MOV A,#7BH
	CJNE A, 00H, YOK7B_ALT
		MOV R0, #43H
		JMP ALT_TAMAM
	YOK7B_ALT:
	MOV A,#7CH
	CJNE A, 00H, YOK7C_ALT
		MOV R0, #44H
		JMP ALT_TAMAM
	YOK7C_ALT:
	MOV A,#7DH
	CJNE A, 00H, YOK7D_ALT
		MOV R0, #45H
		JMP ALT_TAMAM
	YOK7D_ALT:
	MOV A,#7EH
	CJNE A, 00H, YOK7E_ALT
		MOV R0, #46H
		JMP ALT_TAMAM
	YOK7E_ALT:
	MOV A,#7FH
	CJNE A, 00H, YOK7F_ALT
		MOV R0, #47H
		JMP ALT_TAMAM
	YOK7F_ALT:
	MOV A,R0
	ADD A, #8H
	MOV R0,A
	
	ALT_TAMAM:
	;OYUN SONU VE YILAN ELMA YEDI MI KONTROLU
	MOV A, @R0
	JNZ ALT_BUYU
	JMP ALT_ILERI
	ALT_BUYU:
	CLR C
	SUBB A, #0FFH
	JNZ ALT_BITTI ;Yilanin boyunun 8 olmasi durumunda bir sirada yuruyebilmesinin saglanmasi amaciyla yazilmis bir dizi kod...
	MOV 010H, #0FFH ;BUYU BAYTINI SET ET
	JMP ALT_ILERI
	ALT_BITTI:
	MOV A, @R0 
	CLR C
	SUBB A, R6
	JNZ ALT_CIDDEN_BITTI
	MOV 011H, #0FFH	;YILNAN TAM UCTA BAYTINI SET SET
	JMP ALT_ILERI

	ALT_CIDDEN_BITTI:
	LJMP BITTI
	
	ALT_ILERI:
	MOV @R0, #001H

	
	;DEGISECEK BITTI
	
	MOV R4, #002H ; BIR SONRAKI YILANIN YERI (SBIZLEYE PARAMATRE OLARAK KULLANDIK)
	JMP SBIZLE
	
SBIZLE: ;BIR SONRAKI YILANIN YERI (R4 ILE SETTIRILIR)
MOV 003H, 006H

MOV A, 11H
JNZ SON_BASA_DENK_GELMIS
JMP DONGU_BAS
SON_BASA_DENK_GELMIS:
DEC 003H

	DONGU_BAS:
DJNZ 003H, IZLE_DONGU
SJMP IZLE_BITTI
	
	IZLE_DONGU:
	;YILAN HAREKETLERI
	MOV R5, #0FEH
	
	;YILANIN BIR YERINI BUL (BULUNACAK OLAN YE R5'E ATILMALIDIR)
	MOV R0, #040H
	IZLE_FE_ARA:
	MOV A,@R0
	CJNE A, 005H, IZLE_FE_ARA_YOK
	
	JMP IZLE_FE_ARA_VAR
	
	IZLE_FE_ARA_YOK:
	INC R0
	JMP IZLE_FE_ARA
	
	IZLE_FE_ARA_VAR:
	;R0'DA FEhın yeri var
	MOV B,R0
	
	;YILAN HAREKETLERI
	MOV R5, 004H
	
	; YILANIN DEGISECEK PARCASININ YERINI TESPIT ET
	MOV R0, #40H
	IZLE_DEGISECEK_ARA:
	MOV A,@R0
	CJNE A, 005H, IZLE_DEGISECEK_ARA_YOK
	
	JMP IZLE_DEGISECEK_ARA_VAR
	
	IZLE_DEGISECEK_ARA_YOK:
	INC R0
	JMP IZLE_DEGISECEK_ARA
	
	IZLE_DEGISECEK_ARA_VAR:
	;R0'DA DEGISECEK ELEMANIN FE hın yeri var
	
	MOV @R0, #0FEH
	MOV R0,B
	MOV @R0, 004H
	INC R4
	JMP DONGU_BAS

IZLE_BITTI:

		 ;YILANIN SON ELEMANI ILE ILK ELEMANI CAKISMIS MI
		MOV A, 11H
		JNZ SON_BASA_DENK_GELMIS_2
		JMP SONU_HALLET
		SON_BASA_DENK_GELMIS_2:
		MOV 11H,#00H ;;SON BASA GELMIS BITINI TEMIZLE

			;YILAN HAREKETLERI
			MOV R5, #0FEH
	
			;YILANIN BIR YERINI BUL (BULUNACAK OLAN YE R5'E ATILMALIDIR)
			MOV R0, #040H
			IZLE_SON_ARA:
			MOV A,@R0
			CJNE A, 005H, IZLE_SON_ARA_YOK
			
			JMP IZLE_SON_ARA_VAR
			
			IZLE_SON_ARA_YOK:
			INC R0
			JMP IZLE_SON_ARA
			
			IZLE_SON_ARA_VAR:
			;R0'DA FEh'nin yeri var
				 
			MOV @R0, 006H
			JMP SBIZLE_BITTI
			
SONU_HALLET:
; YILAN HAREKET ETTIKTEN SONRA, EN SONDA KALACAK FE'YI KALDIRMAMIZ GEREKIR.
; BU KISIM BU ISLEMI YAPMAKTADIR.

MOV R5, #0FEH

;YILANIN BIR YERINI BUL (BULUNACAK OLAN YE R5'E ATILMALIDIR)
MOV R0, #040H
IZLE_FE_BITTI:
MOV A,@R0
CJNE A, 005H, IZLE_FE_BITTI_YOK

JMP IZLE_FE_BITTI_VAR

IZLE_FE_BITTI_YOK:
INC R0
JMP IZLE_FE_BITTI

IZLE_FE_BITTI_VAR:
;R0'DA FE'IN yeri var
MOV A, 010H
JNZ BUYUYECEK
MOV @R0, #00h
JMP SBIZLE_BITTI
BUYUYECEK:
  MOV 010H, #00H ;YILAN UZAYACAK MI BAYTINI SIFIRLA
  MOV 009H, #00H ;ELMANIN BELLEKTEKI ADRESINI SIFIRLA KI TEKRAR YARATILSIN
  INC R6         ;YILANIN UZUNLUGUNU ARTIR
  MOV @R0, 006H  ;BELLEK GORUNTUSUNDE YILANI UZAT
  JMP SBIZLE_BITTI
  
SBIZLE_BITTI:
LJMP BASLA

BITTI:
  DEC R6
  DEC R6
  MOV R0, 06H
  MOV R1, 06H
  MOV R2, 06H
  MOV R3, 06H
  MOV R4, 06H
  MOV R5, 06H
  MOV R6, 06H
  MOV R7, 06H
  MOV A, 06H
  MOV B, 06H
  END

Makine Kodu ile Red Alert 3 Yazdık 22 yorum aldı.

  1. Güzel bir ödev olmuş, lakin oyundan görüntü yok mu hiç 🙂 Hem gerekliliği konusunda Özlem’e sorsak eminim o da oyundan bir iki görüntü olması gerektiğini söyleyecektir. :))

    1. @Ömer: Teknik Bilgiler başlığının hemen üstündeki fotoğrafın sağ altındaki bellek görünütüsü programın çalışan hali. Videosunu çekmek için de uğraştım ama, akıcı olmadığından koymadım. Oyun direk RAM’de oynanıyor.

  2. >>Kimse bu ödevi vermeden önce, gelecekte ne yapacağımı sormadı ki bana! Ben gelecekte alt seviyeyle falan
    >>uğraşmayacağım, “webci” olacağım ben, ben niye yapıyorum o zaman?

    Okudugun bolumun elestirilecek bir cok yonu ve eksigi var ama bu yazida belirttiklerinin hicbiri bir arguman olamaz elestirilerin icin. Dunyadaki ciddi universitelerin Bilgisayar Bilimleri ya da Muhendisligi bolumlerinin programlarini incelemeni tavsiye ederim. Hicbirinde Web ile programla (Php, asp, java script), Windows ile programla, ya da urun tabanli “populer” programlama dersleri bulamazsin. Bulacagin seyler bilgisayar biliminin temelleri, otomata teorisi, bilgisayar bilimleri icin ileri mantik gibi dersler olacaktir. Webci olacak ve kendisine ne olacagi sorulmamis birisi olarak diyebilirsin ben bunlarin hicbirini kullanmayacagim diye. Hayatinin ileriki bolumlerinde buyuk olasilikla fizik, kimya, matematik ve biyoloji de kullanmayacaksin. O baglamda lise hayatini da kaldir cope at.
    Bu yazdiklarim seni elestirmek, polemik yaratmak ya da uzmek amacini tasimiyor. Blogunu da uzun suredir takip ediyorum. Ancak elestirel olayim derken lutfen “piyasa” denen seyin empoze ettigi argumanlari kullanma. Yasca ve genel ogrenci egilimleri nedeniyle bu hataya dusmen normal.
    Kaldiki belirttigin ders temel teorik bilgisayar bilimi dersi bile sayilmaz. Piyasa zaten temel bilgisayar bilimlerinden haberdar cozum ureten muhendis degil webci, javaci filan ariyor. Merak etme bunlarin hicbirini okulda ogrenmesen bile iyi maasli is bulur ilk 6 ay icerisinde ogrenirsin (deneyimle ve gozlemle sabittir).

  3. Öncelikle yazının oldukça ukalaca yazıldığını, bir fikir açıklamasından daha çok bir küçümseme niteliğini taşıdığını belirtmek isterim. Ancak yine de her türlü fikrin özgürce dile getirilmesinden yana olduğum için, bu yazının bir şekilde yazılmış ve yayınlanmış olması beni memnun etti. Bölümümüz öğrencilerinin bilgi sahibi olmadan düşünce sahibi olduklarını, “mühendislik” nedir sorusunu cevaplayamayacaklarını ve işin en önemlisi bizim ülkeden neden belirli bir bakış açısında mühendis çıkmadığını gösteren güzel bir yazı olmuş. Aslında gençliğin verdiği heyecan ve enerjinin kabından taşması olarakta nitelendirebileceğim bu yazı, bu yazıya cevap yazarken benim değerli vaktimi de harcamama sebep oluyor.
    Biraz ukalalık yapmak gerekiyorsa, 9 senelik, yüksek lisans sahibi ve doktorasına devam eden bir mühendisim. Bunun 4.5 senesini Beko Elektronik Ar-Ge’de çalışarak geçirdim. Araştırma geliştirme bölümünde Tübitak gözetmenlerinden duyduğumuz kadarıyla Türkiye’de özel sektörde o güne kadar yapılmış en büyük projelerden birinde ortalama 12 mühendis 18 ay çalışarak ürün ve test kodu ürettik. Ayrıca projemiz sayesinde birçok patent alındı. Patentlere ve özel sektöre karşı biriyim. Ancak bu süreç sayesinde gömülü sistemler konusunda belirli bir uzmanlık taşımaktayım. Bir üretim hattında çalışmamış, daha mühendis olmamış ve bu kadar kolay yapılabilecek bir projeyi abartan öğrencileri görmek beni üzdü. Öncelikle “Bu insan benden daha bilgili ve bir uzmanlığa sahip. Acaba ben hata yapıyor olabilir miyim?” düşüncesi yerine herşeyi ben bilirim bunlar gereksiz denilmesi büyük bir cahillik göstergesidir. Ülkenin teknoloji üretememesinin temel nedeni de budur. Ben “web”ci olacağım demek, yurt dışından bize dayatılan teknolojileri alıp onların bayiliğini yapacağım demekten öteye geçmez. Bilgisayar donanımı ve mimarisi hakkında bilgi toplamamak, öğrenmemek anatomi bilmeyen bir tıp doktoru olmakla eş değerdir.
    Bölümümüzdeki öğrenciler Java üzerinde kod geliştiriyorlar genellikle. Acaba kaç öğrenci Java sanal makinası nasıl çalışıyor, bir java sanal makinasını nasıl yazabilirim diye merak ediyor? Kaç tane öğrenci bir web server nasıl yazılır ya da bir scripting dili nasıl geliştirilir konusuna eğildi, araştırma yaptı? Hangi öğrencilerimiz bir programlama dili tasarladı ve bunun derleyicisini yazmak için uğraştı? Bir işlemci tasarlamaya meraklı ve bunun için çalışan öğrenciler var mıdır?

    “Ben gelecekte alt seviyeyle falan uğraşmayacağım, “webci” olacağım ben, ben niye yapıyorum o zaman?”: Tabiki istediğiniz alana yönelmek konusunda özgürsünüz. Ancak şunu akıldan çıkarmayın webci olmak için ya da program geliştirmek için mühendis olmaya gerek yoktur. Mesela matematik, ayrık yapılar, bilgisayar mimarisi, mantık tasarımı bunları da bilmene gerek yok.

    Bilgisayar donanımı, donanımın dili bilgisayarın kromozomları dna’sı dır. Size verilen proje kısıtlı kaynakların bulunduğu donanımsal bir ortamda, hatta işletim sistemi ve kütüphanelerin olmadığı bir ortamda program nasıl geliştirilir bunun farkına varmanız içindi. C dilinde yazdırmamamızın nedeni de budur: Bir mühendislik yapın, elinizde hiçbirşey yok hadi çözün problemi. Tüm bunlara ek olarak Linux işletim sistemini kullandırmak istedik. Bu sayede öğrenciler açık kaynak kodlu yazılımları kullanacaklar ve bu dünyaya giriş yapacaklardı. Hatta açık kaynak kod denilen şeyin ne olduğunu görsünler. Linux görmeden mezun olan öğrencilerimiz var ne yazıkki…

    Özetle, öğrencilerimizin bir bakış açısına gelebilmesi için sanırım uzun zaman geçmesi gerekiyor. Öğrencilerimiz kolaya kaçan ve not için çalışan, kendilerini geliştirmeyen, kendi beğenileri ve doğrularını mutlak doğru kabul eden bir bakış açısına sahipler. 8051 mikrodenetleyicisini bilgisayar mimarisi dersinde de göreceksiniz ne yazıkki. Ama bu sefer içsel tasarımını. Gerçi gereksiz bilgiler ama siz yine de öğrenmeye bakın. Günün birinde bir üniversitenin yüksek lisans ya da doktora mülakatında (hem de gözümüzde büyüttüğünüz hem yurt içi hem yurt dışındaki üniversiteler) size bir soru sorulursa cevap verebilin. Birden bire araştırma geliştirme bölümünde önünüze 8051 tabanlı bir sistem koyabilirler…

    Sevgiler ve sınavlarda başarılar,

    Sinan

  4. @Sinan Hocam:

    Kabul etmeliyim ki hocam, üslubum dalga geçer gibi. Bu blogu yazmaya başladığım günden beri bu böyle gitti maalesef. Ne kadar uğraşırsam uğraşayım bunu değiştirmeyi başaramadım. Çok defa olumsuz anlaşıldı, ki hak da veriyorum kesinlikle. O yüzden bu konuda rahatsızlık verdiğim için özür diliyor ve yazım sitili kişisel ya da aşağılayıcı almamamızı sizden önemle diliyorum çünkü böyle bir şey kesinlikle yok.

    Yazdıklarınızda bazı yerlere katılıyorum ama bazı yerlere de katılmamaktayım.

    Hocam mesela bu verilen proje önceki tecrübelerinizden dolayı sizin için kolaylıkla yapılabilecek ve basit bir proje olarak görünse de, ben ve ödevi yapan tandığım birçok arkadaşım ödevi tamamlayana kadar çok zorlandı ve çok ciddi vakit harcadı. Kendi kodumuz için konuşuyorum, 15 saatlik emek var üstünde. 15 net saat. Bu da az gelebilir belki ama, Nesneye Dayalı Analiz ve Tasarım ödevi, Windows Web ödevi, İşletim Sistemleri Ödevi, finallere hazırlanmak, diğer İşletim Sistemleri ödevi, staj görüşmeleri arasında gerçekten çok fazla bir saat. Ve bu vaktin büyük iki kısmı kopyala yapıştır yapmak ve MCU 8051 ide’de kodun çalışmasını seyrederek geçti (çünkü çok yavaş çalışıyordu).

    Tam olarak bu yüzden verilen ödevin çok aşırı uzun olduğunu düşünüyorum. Geçen dönem de ASM ile kod geliştirmiştik. Prosedür yazmıştık. EBOK EKOK almıştık, ve o zamanlar gıkım çıkmamıştı. Gerek algotimayı geliştirmek, gerek kodlamadaki ayrıntıları öğrenmek için önemli bir fırsattı ve gerçekten çok şey öğrendik. Bu sefer ise, ödev uzundu ve genelde yaptıklarımız birbirine çok benzediğinden pek bir şey katmadı. Serzenişim budur.

    Bunun dışında “webci” olmak kısmını biraz açarsam, sunucu istemci mimarisini kullanan sistemlerde iletişim, güvenlik veya bunları içeren sistemlerin nasıl tasarlanırsa daha etkin olabileceği, hangi tasarımların genişletilebilirlik sağlayacağı gibi konulara kafa yormak ilgimi çekiyor. Ve tasarımsal şeyler içeren bu konuları bilgisayar mühendisliği okumamış, otomata nesneye dayalı analiz, nesne ve hatta assembly ve işletim sistemi derslerini almamış olan birinin yapabileceğine inanmıyorum. Yani derdin oturup “site yazmak” değil. Ama “site yazılabilecek” bir frameworkun nasıl olması gerektiği ya da bununla ilgili tasarımlar çok ilgimi çekiyor.

    Bilgisayar mühendisliği okumayan birinin yapacağı bir yazılım iskambil kağıtlarından kule gibi olur diye düşünüyorum. Bu yüzden de “webci” yani bu konuda tasarım yapan, sistemi tasarlayan mühendislerin gerektiğini düşünüyorum.

    Hocam şurada beni yanlış anlamışsınız: Ben bu derse gereksiz demiyorum. Deseydim zaten bu bölümde işim olmazdı. Ben bu ödeve gereksiz diyorum. Geçen dönemki EBOB EKOK ödevleri gibi, ya da öğretici içeriği olan ama kopyala yapıştır faslı değil, eğitici faslı çok olan bir ödev verilebilirdi inancındayım. Çünkü yazdım, yazanları gördüm. Hatta internetten kod bulup, değiştirenleri de duydum. Herkes uzunluğundan şikayet etti.

    Bunun dışında her ne kadar ileride bir programlama dili yazmak ya da geliştirmek ve benzeri şeyler kendimi geliştireceğim şeyler olmasa da merak ettiğim ve cevaplarını teorik olarak öğrendiğim şeyler. JVM’nin nasıl çalıştığını da teorik olarak biliyorum ve eğer kendimi bu yönde geliştirmek isteseydim fazlasını da bilirdim. Ama ben bunun yerine HTTP protokolünün inceliklerini öğrendim ve yavaştan TCP’ye doğru da gitmem lazım inancındayım.

    Linux’te çalışmak konusunda haklısınız. Farklı bir sistem, hele de açık kaynak bir sistem görülmesi lazım. Ama “Simple Keypad” koyduğum anda çöken ya da simulasyonu gerçek hayattakinden 100’lerce kat yavaş yapan ve bir türlü hızlanmayan, pencereyi boyutlandırdığımda bile çöken bir programı kullanıyorsak bu konuda serzenişte bulunmalıyım. Keil mikrovision, deneme sürümü, bir defa çökmedi, MCU IDE en az 10 defa falan çöktü.

    Bu yüzden hocam, normalde ödevleri bir şeyler öğrenmek için yapsam da (geçen seneki ASM’ler ve günde 4 saat uyumama sebebiyet veren Windows da buna dahil) bu ödevi not için yaptım. Tek öğrendiğim, MCU IDE’nin genelde çöktüğü ve bir de timer ile rastgele sayı üretilmesi oldu. Diğerleri geçen dönemkinden farklı değildi. Sorun da burada.

    8051’in iç yapısını çok merak ediyorum. Çünkü farklı bir şey öğreneceğiz. Muhtemelen hayatımda bir defa bile gerekmeyecek ama farklı bir şey olunca merak edeceğim ve seve seve öğreneceğim.

    Derdim, ödevin amacına ulaşamamış olması. Daha doğrusu bunu düşünmem.

    Sınavlarla ilgili dilekleriniz için teşekkür ederim hocam.
    Daha önemlisi vaktinizi ayırıp, eleştirilerime yanıt verdiğiniz için.

    İyi günler

  5. Sayın Sinan Bey,

    Söylemleriniz bir çok öğretim üyesi, öğretmen hatta artık bu işin üstü dediğimiz profesörlerin görüşlerini yansıtmaktadır.
    Maalesef günümüz öğretim elemanları teknolojinin çok gerisinde kalmışlardır. Bu elbette sizin ya da bir başkası için geçerli olmayabilir fakat genele vurduğumuzda durum budur.

    Kendi sitem olan FxDev.org’da görebileceğiniz üzere Ege Üniversitesi Elektrik ve Elektronik Mühendisliği öğrencisiyim. Öncelikle kim mikroişlemci tasarlamak ister demişsiniz. Buna cevap vermek isterim;
    Evet, ben tasarlamak istedim ve bir mikroişlemci tasarladım. 32bit, Pentium serilerinin teknolojisiyle denkti. Benim dalım için bu gerekli bir uygulama idi ve gerekli donanımlar bölümümde mevcuttu.
    Size sormak istediğim, istediğiniz donanımsal özellikleri sağlayacak altyapıya bölüm olarak sahip misiniz?
    Acaba şu anda projede yüksek not verdiğiniz kaç tane proje gerçek hayatta çalışır durumda?
    Simülasyonda çalışan gerçek hayatta da bire bir çalışır mı? (Buna elbette bir Elektronik Mühendisi gülecektir)

    Benim gördüğüm kadarıyla, bölüm olarak bu yetilere sahip değilsiniz!

    Kimse üzerine alınmasın ama bence bölümünüz bir bilgisayar mühenisliğinden öte, bir yazılım mühendisliği ve yazılım geliştirme üzerine kurulu. Bunu bölümümüzde görüştüğüm bir çok arkadaşımdan, benim bölümümde çift ve yan dal yapan arkadaşımdan duyuyorum.

    İşte bu anlayışla kurulan bir bölümde, sadece ‘and’ ve ‘or’ kapılarını donanımsal olarak gösterip ‘işte biz size donanım gösterdik’ deyip, insanlardan bunun gibi ‘bana’ bile garip gelen proje veya projeler istenmesi uygun değil.

    Bizler de 8051 ile projeler geliştirdik, uyguladık. Fakat Umut’un bahsettiği derleyiciyi ilk gördüğümde bana çok ironik geldi. Sırf açık kaynak kodlu diye kimsenin profesyonel anlamda kullanmadığı bir derleyiciyi öğrencilerinize gösteriyorsunuz ve de buradan olumlu bir sonuç çıkmasını bekliyorsunuz.

    Bu işi sıfırdan öğretmeye hevesli bir bölümde acaba şu anda kaç kişi ekran kartı, CPU, RAM, bunların birbiri ile bağlantıları, gömülü sistemler üzerine çalışıyor?
    Bölümünüz bilgisayar donanımı açısından ‘bu klavye, bu da fare’ demekten başka öğrencilerinize neler katıyor?
    Örneğin bir öğrenci bu bölüme ben VGA monitörü bilgisayarsız, kendi tasarladığım mikrodenetleyici ya da mikroişlemci ile süreceğim, kendi yarattığım ekran kartımı test edeceğim dediğinde bölümünüz bu öğrenciye donanım ya da yardım olarak ne sağlıyor?
    Şu anki bitirme tezlerinin kaçı donanıma yönelik?

    Ya da en basitinden, neden bu tasarlattığınız projeler gerçek ortamda denenmiyor?
    Bun soruların, bilgisayar mühendisliğinde görev yapan bir öğretim üyesi tarafından cevaplanmasını canı gönülden isterim.

    Saygılarımla..

  6. Tekrardan merhabalar,

    Gençlerin bu düşüncelere sahip olması ki elbette doğrular olduğu gibi oldukça yanlışlar da vardır, üniversitelerimizin bir lise mantığına sahip olmasından ileri gelir. Öğrenciler üniversite ile liseyi bir tutuyorlar. Üniversiteye gelince farklı birşeyle karşılaşmadıkları için ki bu onların suçu değil, bazı gerçekleri görememektedirler.

    Bilgisayar mühendisliği ile elektronik mühendisliği bölümleri, kendi içlerinde örtüşen ve ayrışan bir sürü noktaya sahiptirler. Elbette bir bilgisayar mühendisi mezunu bir elektronik mühendisi kadar donanımsal bilgiye sahip olamaz. Yaptığı tasarımlar iyi bir elektronik mühendisinin gerisinde kalacaktır. Hatta kalmalıdırda. Aynı şeyi yazılım için de düşünebiliriz. Elektronik mühendisleri tabiki C ve benzeri dillerde program geliştirebilir. Ancak yazılım geliştirme başlı başına büyük bir araştırma alanıdır ve binlerce araştırma projesini içerisinde barındırır. Bir elektronik mühendisi de algoritmik analizler, yazılım sistemleri tasarımı ve benzeri konularda bilgisayar mühendisi kadar yetkin olamaz. Hatta olmamalıdırda.

    Bizim donanıma bakış açımız elbette elektronik mühendislerinin bakış açısından farklıdır. Biz gömülü sistemler ya da alt seviye sistemler denildiği zaman, işin sistem yazılımı kısımlarını düşünürüz. Donanımsal süreçler bizim için bir fikir sahibi olmamız gereken şeylerden birisidir. Ancak biz donanım üzerinde koşan sistem yazılımları ya da yazılımlar ile ilgileniyoruz. Bunun içerisinde işletim sistemi geliştirme, donanımı süren yazılımların geliştirilmesi, donanımı verimli bir şekilde kullanan alttaki donanımın yeteneklerini bilerek onu süren yazılım sistemlerinin tasarımı, geliştirilmesi ve uygulama yazılımı yer alır. Bunların hiçbiri elektronik mühendisliğinin kapsamı içerisinde yer almaz. Tabiki elektronik mühendisleri de bunlarla ilgilenebilir hatta bunları geliştirebilir.

    Şimdi ana konulara gelecek olursak, öğrencilerimiz henüz bir araştırma içerisinde girmedikleri için örneğin bir yüksek lisans ya da doktora süreci içerisinde yer almadıkları için bazı şeylerin farkında değiller. Üniversiteler teknoloji öğretim yerleri değildir, üniversite bir bilim yani bilgi üretim merkezidir. Özetle, toplumu ileriye götürecek bilgi üretiminin ve aydınlanmanın merkezi üniversitelerdir. Bu bilgiler teorik ve pratik bilgiler olabilir. Teknoloji, bilimin uygulamacı yönüdür. Size üniversite hiçbir teknoloji öğretmeyebilir. Ancak bilim nasıl yapılır bu üniversiteden her mezunun sahip olması gereken temel özelliktir.

    Öncelikle yazılım mühendisliği nedir, bilgisayar mühendisliği nedir ve tüm bunlara ek olarak bilgisayar bilimleri nedir bir tanımını yapmanızı ya da öğrenmenizi tavsiye ederim. Tüm bunlara ek olarak dünyada bilimsel olarak önde olan üniversitelerin bilgisayar mühendisliği bölümlerini ve bunların araştırma ve eğitim planlarını irdelemenizi tavsiye ederim. Sanırım bunları yaptıktan sonra bazı şeyler kafanızda daha net olacaktır. Arkadaşlar lütfen bilgi sahibi olmadan düşünce sahip olmayınız. Öncelikle araştırma!

    Bölümümüzün amacı donanım tasarlayan bilgisayar mühendisleri mezun etmek değildir. Nasıl C programlama dilini bilmek bilgisayar mühendisi olmak değilse, and or kapılarını bilmek te donanım tasarlamak ya da elektronik mühendisi olmak değildir tabiki. Bunun herkes farkındadır zaten. Gömülü sistem konusunda uzmanlaşan bilgisayar mühendisi, gömülü sistem donanımı üzerinde yazılım geliştirebilen bir mühendistir. Bölümümüzde günümüzde aktif bir araştırma alanı olan wireless sensor network konusu üzerinde araştırma yapacak gençler için 40 adet kablosuz algılayıcı düğümümüz mevcuttur. Bunun dışında bir donanımımız mevcut değildir. Ancak gömülü sistem yazılımı geliştirme konusunda araştırma yapacak öğrenciler için bu algılayıcı düğümleri kanımca yeterlidir. Hatta çalışmak isterseniz beklerim.

    Bir yazılım-donanım işbirliği sürecinde çalışmamış ve gerçekten bir üretim bandında yer almamış gençlerin kendilerinden emin bir şekilde gerçekten bilgisizce bazı şeyleri savunması bence haddinden fazla özgüvenden ileri gelmekte. Kullandığımız bir derleyici değil bir IDE’dir. IDE alt yapıda sdcc http://sdcc.sourceforge.net/ kullanmaktadır ki bu derleyici gömülü linux işletim sistemi kullanarak sistem geliştiren bir sürü gömülü sistem firması tarafından kullanılmaktadır. IDE ise oldukça basit ve bizim projelerimiz için yeterlidir. Hangi yazılımları kullanacağımıza neyi öğreteceğimize müsade edinde biz karar verelim. Bilgisayar mühendisliği öğrencisi için program kullanmak, bir IDE öğrenmek çok kolay işlerdir. Öğrencilerimiz istedikleri IDE’yi kullanmakta özgürdürler. Öğrencilere zaten hemen hemen herşey gereksiz gelmektedir. Örneğin artık bilgisayarların otomatik yaptığı integral işlemlerini öğreten matematik dersleri de ironik ve gereksiz olabilir. Simulasyon ortamlarına gelince, bu araçlar da yazılım geliştirme süreçlerinin bir ürünüdür. Gömülü yazılım geliştirme süreci nedir konusunda google’da bir sürü bilgi mevcuttur. Araştırabilirsiniz.

    Verdiğimiz projeler ve öğrettiklerimiz bir lisans öğrencisi tarafından eleştirilebilir, anlaşılmayabilir ya da eksik görülebilir. Sizler de ilerde üniversitelerde yer alırsanız yanlış gördüğünüz şeyleri düzeltmek için mücadele ediniz. Ancak önce pişmek, olgunlaşmak, çok okuyup çok araştırmak gerek.

    Buraya yazmak hem uzun hem yorucu. Bundan sonraki süreçte buraya yazamayacağım ne yazikki. Bu ve benzeri sorularınızı, düşüncelerinizi iletmek için odama gelebilirsiniz. Dediğim gibi hepinizi beklerim hatta bekliyorum.

  7. Sayin FxDev,

    >>Söylemleriniz bir çok öğretim üyesi, öğretmen hatta artık bu işin üstü dediğimiz profesörlerin görüşlerini
    >>yansıtmaktadır. Maalesef günümüz öğretim elemanları teknolojinin çok gerisinde kalmışlardır. Bu elbette sizin ya >>da bir başkası için geçerli olmayabilir fakat genele vurduğumuzda durum budur.

    Teknolojinin gerisinde kalmaktan kastiniz nedir anlamadim ama o belirttiginiz teknolojileri ureten sirket calisanlarinin genel olarak mezun oldugu universitelerin programlarini bir inceleyin lutfen. Birkacinin linki asagida:

    Hicbirinde teknoloji ya da urun tabanli bir ders yok. Php programlara, Javaci, Webci olmanin temelleri gibi. Ha dersinizki yazilim muhendisligi farkli bilgisayar muhendisligi farkli. Asagida da dunyadaki ilk yazilim muhendisligi bolumlerinden birinin programi:

    http://www.se.rit.edu/content/line-co-op-student-work-assignment-evaluation

    Ben ciddi universitelerin hicbirinde teknoloji ogretilen, urun ogretilen bir ders bulamadim.
    Akademiyle teknolojinin (teknoloji dediginiz sey aslinda piyasa, adini dogru koyalim) birbiriyle cok icli disli olmadigi dogrudur. Aslinda boyle olmasi da gerekir. Universite meslek ogretilen bir yer degildir. Bilgi uretmeyi, tartisma ortami yaratmayi amaclar. Mezunlarida aranmasi gereken seyler alanla ilgili temel bilgi becerileri edinmesi ve temel problemleri ozgun cozumler getirip getirmemesidir.
    Bolumun bir cok eksigi var bu dogru ama bence eksikler belirtilen seylerin tam aksi istikametindeki seyler. Temel teorik dersler eksik filan denilse anlasilabilir, ama getirilen yorumlarin ve elstirilerin ben dayanak noktasini anlamis degilim.
    Yazida ve cevaplarda webci olmak konusunda belirtilen seylerin hicbirisi universite egitimi icerisinde yer almaz. Daha oncede dedigim gibi bunlarin hepsi ilgili bulunacak iste ilk 6 ay icerisinde ogrenilir.

  8. @Arda: Ürün tabanlı ders dediğiniz ders bu dönem benim için “Windows ile Web Programlama”. Ve içerisinde “Windows” adı geçmesine rağmen, “Windows” ile pek alakası da olmayan ve ilgi alanıma girek sunucu istemci iletişimindeki protokolleri öğernmiş oldum. Aynı şekilde yine Windows ile alakası olmayan, bir proje geliştirme sürecini yaşadım. 5 kişilik bir ekip nasıl idare edilirmiş (ya da edilemezmiş oldu daha çok), proje geliştirme sürecinde çıkabilecek sorunlar neler olurmuş, sunum nasıl yapılırmış gibi şeyleri öğrendim. Brinici elden gereksinim analizi yaptık ve adında “Windows” geçse bile ben bu dersten sırf “piyasa” ile alakalı olmayan da onlarca şey öğrendim. Açıkçası ders programlarına açık bakmadım ama eminim bunların karşılığı olan ama adında “Windows” geçmeyen dersler başka üniversitelerde de vardır. Biz nesneye dayalı analiz ve tasarımda da güya gereksinim analizi yaptık. Ama kafadan. Şunu şöyle yapalım, bu böyle güzel olur diye. Bunu birinci elden yapmak ayrı bir tecrübeydi.

    Öte yandan bu konuyla pek alakalı olmayan giriş paragrafını geçersek, şu dil şöyledir şu dil böyledir gibi her dili ayrı ayrı göstermek (her ne kadar benim hoşuma da gitse) akademik olmadığına katılıyorum. Ama eğer yazımı okuyacak olursanız tekrardan, yazının bunla alakası olmadığını göreceksiniz.

    Yazının “mikrodenetleyiciler dersi çok gereksiz ve saçma” ile alakalı olmadığını da göreceksiniz. Sinan hocaya yazdığım yorumda da göreceksiniz. Bu yazının amacı şudur:

    1- Niye bir dönem önce zaten öğrendiğimiz şeyleri tekrarlıyoruz? Başka bir şey görsek?
    2- Niye yarısından fazlası kopyala yapıştır olan bu yüzden vakit kaybından başka bir şey olmayan bir ödev veriliyor? Bunun yerine geçen dönemki assembly ödevleri gibi öğretici ama kopyala yapıştırı olmayan daha güzel bir ödev verilmiyor?
    3- Açık kaynak olsun ya da olmasın, dünyadaki tek IDE’ymiş gibi, bize hangi tuşa basarsak basalım çöken, stabilitesi bu kadar kötü olan bir IDE tanıtılıyor? Madem o derleyici açık kaynak kodlu, kullanan adam gibi hiç mi derleyici yok? Ekran görüntüsünü görüyorsunuz, her daim “Error, error…” ve simülasyonu gerçek zamanlı yapabilme kapasitesi de yok. Bu kadar başarısız bir IDE olmasa, ben de yakınmazdım.

    Bu yazının amacı bunladır. Eğer bölümümüzde niye dile yönelik dersler var diye sorup bunu tartışacaksak, ayrı bir başlık açayım, onda tartışalım. Ama eğer konudan sapmıyorsak, benim derdim mikrodenetleyici falan görmek değil. Merak ediyorum zaten ben bunları. Ama bu verilen ödevi anlamlı kılmıyor hala.

    Benim ödevin anlamsızlığından yakınmamı, “mikrodenetleyicileri görmek saçma”ya çekmeyelim.

    alıntı:
    Ödev kontrolünde hocamız bize bu ödevin bize ne kattığını sordu. Ben de açık açık söyledim kendisine: “Açıkçası üç günümüzü boşa harcamaktan başka bir şey katmadı.” Meğerse öyle değilmiş… Bu ödev bize, eğer ileride alt seviyeli işlerle meşgul bir yerde çalışırsak (mesela embedded) o zaman işlerin nasıl gittiğine dair fikrimiz olmasını sağlayacakmış.

    Bu fikir bize geçen dönem sağlandı. Ha yok diyelim sağlanmadı, tekrar dediğim gibi kopyala yapıştırı az, öğretisi bol olan bir ödev ile sağlanabilirdi.

    Ödevin çözümüne bakın, kopyala yapıştırı görün. Bu kadar kopyala yapıştırı yapınca, ben bunu niye yapıyorum diye sormamı mazur görün.

  9. simdi beni iyi ve dikkatle dinleyin.eleştiri oklarim yaydan çıkmak üzere.ama bunlardan bir ders çıkarmaya çalışın.Eleştriyi hazmedebilin.Yoksa yazdiklarim sizin için birşey ifade etmeyecektir.

    Sayin Arastirma ve Ogretim gorevlileri :Her eleştiri durumunda ,”öğrenci hic birseyden memnun olmaz zaten ” gibi kıt bir bakış acisiyla ne bilime ne ogrencilere bir katki saglanmaz.

    “Ogrenciler eksik,ogrenciler cahil,onlar anlamiyorlar”

    .Kişisel yazmiyorum bunu sinan bey.ama diger arastirma gorevlilerinden acik yureklilikle memnunmusunuz? bir kac kisi haricinde onlar kendini biliyor uzerlerine alinmasinlar,iş bulamayip aman devlete kapagi atayim memur olayim maasimi tikir tikir alayim kafam rahat etsin dusuncesinde olan insanlar arastirma gorevlisi olarak yer ediniyor universitemizde..Lablarda öğrencilerin sordugu basit sorulara cevap veremeyen,kendi asistanliginin yaptigi dersler hakkinda bile o dersin lisans ogrencileri kadar bile bilgi sahibi olmayan kac tane arastirma gorevlisine sahibiz??

    Öğrencilerin eleştirilerinden faydalanmak sizin icin onur kirici bir hareketmidir?Bu sonsuz özgüven,ogrenciler bisey bilmez biz biliriz mantalitesi acaba dunyaya ve bilime at gozlukleri ile bakmaniza sebep olmus olabilir mi?Verilen odev kendisini tekrar eden ayni islemleri defalarca yazmaktan ibaret oluyorsa ve ogrenciler bu konu hakkindaki serzenişini dile getiriyorsa bundan neden rahatsiz oluyorsunuz?? daha yaratici ,daha ogretici odevler verelim bundan sonra diye dusunmek bu kadar zor mu?

    IDE konusunda bu kadar ogrenci sorun yasamis.Ama sizin yaklasminiz bu IDE iyidir,hangi ideyi sececegimze biz karar verelim … simdi tekrar soruyorum bu kadar ogrenci sorun yasadi gelecek donemde şu IDE yi tanitalim derslerde demek bu kadar mı zor??

    universitelerin teknolojiyle olan bağına bir Akademisyen olarak bu yaklasiminiz beni inanin cok uzdu.Bence universitelerin teknoloji olan iliskisini tekrar incelemenizi tavsiye ederim.

    ornek gosterdiginiz universitelerden birisi MIT,Silikon Vadisinin temelleri MIT sayseinde atilmistir.Teknoloji üretmek ise temel hedefidir MIT nin.adi bile üzerinde.inanin cok üzüldüm yaklasiminiza.

    ogrenciler eksik ogrenciler cahilde acaba bölüm akademisyenleri ne alemde? açık yüreklilikle bana bu bolumun tum akademisyenleri devletten aldigi parayi hakediyor diyebilirmisiniz?Vicdaniniz buna elverir mi?(herkes uzerine alinmasin,gerci boyle yazinca kimse de uzerine alinmayabilir )

    öğrencilerin feedback lerine kulak verin.Öğrenciler IBM 360 sistemlerinin gosterildigi Sistem Programlama dersini elestiriyordu.ama yine ayni mantalitedeki arastirma gorevlileri,bunun ne kadar gerekli bir ders olduguna dair sayfalarca size bilgi verebilridi.ne oldu MÜDEK bu dersin artik günümüzde uygulama alani olmadigina ve gereksiz olduguna karar vererek müfredat tan cikardi.

    8051 mimarisi bir bilgisayar muhendisi icin olmazsa olmazlardan biridir.Bir mühendis ile piyasda gezinen farkini yaratan bir cok unsurdan biridir sadece..

    ancak bu ders amacina ulaşamiyorsa,eleştiriler artiyorsa ayna dönüp bakmak gerekir.bir ogrenci kalkip bu odev size ne kalkti sorusuna hic birsey katmadi diyorsa,inanin katmamistir.sorunda ogrencide degildir.ne katip ne katmadigini akademisyenler degil ogrenciler bilir…bu cevaplardan sonra donup aynaya bakip ogrencilere daha faydali neler yaptirabilirz diye dusunmek gerekir.

    Teknolojiler universitelerden cikar.kişisel yaraticiligi ,yeni fikirleri onleyerek ben bunu sectim herkes bunu yapsin denilen bir kurumda ne uretim ne bilim ne de hic birsey ortaya cikmaz.

    Amacim burda herseyi bildiklerini sanan ancak ne yazikki cok az bilgi birikimne sahip olan arastirma gorevlilerinin donup aynaya bi bakmalarini ogrencilere ve bagli bulunduklari kuruma nasil daha fazla fayda saglayabileceklerini dusunmelerini saglamaktir..Yapici olmasini umduugum bu eleştirilere kulaklarini tikayanlar bulunduklari yollarinda ilerlemeye devam edebilirler,zaten umutsuz birer vakaya donusmek üzereler….

  10. Merhabalar,

    Öncelikle yazdığı yorumlarda isimlerini vermeyen arkadaşların fikirlerinin ne kadar arkalarında olduğundan şüphe duyduğumu belirtmek isterim. Gerçi “FxDev” adlı arkadaşın ismine cismine sitesinden erişebiliyoruz. Ancak keşke doğrudan kendi ismini yazıp sitesinin bağlantısını vermeseydi de ben onu Google’dan bulsaydım. Daha hoş olurdu. Bununla beraber, “Vicdanın Sesi” adlı arkadaşın ise hem ismini saklaması hem de “simdi beni iyi ve dikkatle dinleyin” gibi azarlar bir uslüpla yorumuna başlaması, hoşgörünün hakim olması gereken ve bölümüzün “bilimsel” altyapısı, lisans öğrencisi arkadaşların sorunları vb. tartışıldığı ortama yakışmamıştır. Böyle bir ortamda lütfen üsluplarımıza dikkat edelim. Bize yakışmaz.

    Yukarıda bir dersin ödevinin içeriği ve kullanılması önerilen IDE hakkında bazı eleştiriler yöneltilmiş. Anladığım kadarıyla önerilen IDE’den memnun olmayan arkadaşlar araştırıp daha iyisini bulup onu kullanmışlar ve dersin hocasının da sanırım buna bir itirazı olmamış. Ne güzel! Hoca demek zaten herşeyin en iyisini, IDE’nin en süperini bilen demek değil; yol gösteren, kıvılcımı çakan, “büyük resmi” görebilen demektir. Hocalar eleştirilmeli, yerden yere vurulmalı ancak bu mutlaka karşılıklı saygı çerçevesinde olmalıdır. Daha iyi IDE’ler, yazılım geliştirme araçları çıkmış olabilir; Sinan’ın da son yanıtında belirttiği gibi “Öğrencilerimiz istediği IDE’yi kullanmakta özgürdürler.” (Bu noktada Vicdanın Sesi adlı arkadaşı yazışacağı ortamdaki yazıların hepsini dikkatlice okumaya davet ediyorum!).

    Söz konusu ödevin öğrencilere ne kadar katkıda bulunduğu konusunda bir yorum yapamayacak olsam da Vicdanın Sesi olan arkadaşın “bir ogrenci kalkip bu odev size ne kalkti sorusuna hic birsey katmadi diyorsa,inanin katmamistir.” sözüne kesinlike katılmıyorum. Çünkü az önce de ifade ettiğim gibi hoca “büyük resmi” gören yol göstericidir. Misal verecek olursam, nümerik analiz dersi alan hemen herkes, “bu ders ne işimize yaracak” diye düşünür. Ancak daha sonra fark edebilirler ki, örneğin bir 3 boyutlu grafik tasarım aracının altyapısı (dikkat: aracın kullanılması ve araçta birşeyler geliştirilmesi değil) üzerine veya grafik kart yazılımları üzerine çalışacak olurlarsa bu bilgiler çok işlerine yarayacaktır. Nitekim benim de mezun olduktan sonra, iyiki şu dersi almışım dediğim çok olduğu kadar neden bunu bize göstermemişler dediğim de çok olmuştur, olmaktadır. Dolayısı ile Sinan’ın da belirttiği gibi “Sizler de ilerde üniversitelerde yer alırsanız yanlış gördüğünüz şeyleri düzeltmek için mücadele ediniz.”.

    Derslerin içeriklerine gelince… Bilgisayar ve yazılım mühendisliği disiplinlerinin müfredatları üzerine kayda değer çalışmalar yapılmıştır günümüze kadar. Parnas’ın 1999 yılında IEEE Software dergisinde yayınlanan bir makalesinde (Parnas 1999) etkin bir yazılım mühendisliği eğitimi için, yazılım mühendisliğinin bilimsel temeli (Bilgisayar Bilimleri) korunurken, geleneksel mühendislik eğitimi yaklaşımının izlenmesi gerektiği savunulmuştur. Bu bağlamda önerdiği müfredatın içeriği; (1) “diğer tüm mühendislik disiplinleri tarafından alınan temel dersler”, (2) “yazılım mühendisliğinin matematiksel temelleri üzerine dersler” ve (3) “yazılım geliştirmeyle ilgili dersler olarak” özetlenebilir. Bu bağlamda Arda’nın verdiği örnekler oldukça yerinde.

    Parnas, çalışmasındaki müfredatta, güncel bazı programlama dillerine ve teknolojilerine değinmemiştir. Güncel yaklaşımların temelindeki fikirlerin öğretilmesi gerektiği ve öğrencilerin güncel araçları laboratuar çalışmalarında kullanması gerektiği ifade etmiş, ancak, bu konuların eskilerin yerini aldığının ve zamanla onların da yerlerini yenilerine bırakacaklarının unutulmaması gerektiği belirtmiştir. Bugünün öğrencilerinin meslek hayatlarının 40 yıl sürebileceğine dikkat çeken Parnas, o süre içinde geçerliliğini koruyacak ve kullanışlı olacak temel bilgilerin belirlenerek, derslerde vurgulanması gerektiğine dikkat çekmiştir. Benzer şekilde gene IEEE Software dergisinde çıkan diğer bir makalede de (Saiedian 2002), yazılım mühendisliği eğitiminin güncel dillere ve araçlara yoğunlaşmak yerine, bir mühendisin tüm meslek hayatında yararlı olacak iyi mühendislik uygulamalarına ve yazılım geliştirmenin çeşitli etkinliklerine ilişkin tekniklere yoğunlaşması gerektiği ifade edilmektedir.

    Bölümümüzde de tam anlamıyla olmasa da buna benzer bir sistem uygulanmaya çalışılmaktadır. Zamanla oturacağına olan inancım sonsuz. Bu bağlamda, eleştirileri olan lisans öğrencisi arkadaşların geri bildirimlerini çekinmeden istedikleri öğretim üyesi veya araştırma görevlisi ile paylaşmasını şiddetle tavsiye ediyorum. Ayrıca, bildiğim kadarıyla lisans öğrencilerinin temsilcisi olan 2 arkadaş düzenli olarak bölüm yönetimiyle görüş alışverişinde bulunmaktadırlar. İlgilenenler, kaygılarını bu temsilci arkadaşlara da iletebilirler.

    Buna ek olarak birkaç şeyi daha ifade etmek istiyorum. Vicdanın Sesi’nin “iş bulamayip aman devlete kapagi atayim memur olayim maasimi tikir tikir alayim kafam rahat etsin dusuncesinde olan insanlar arastirma gorevlisi olarak yer ediniyor universitemizde” lafına karşılık olarak verebileceğim cevap bu arkadaşlara kimlerin yer EDİNDİRDİĞİ’dir. İma edilen kişiler yapılan işin muhtevasına uygun olmayabilirler hakikaten, bu ayrı bir tartışma konusudur ama, asıl onları buralara yerleştiren ve gerekli geri bildirimi vermeyen hocalarına yöneltmek gerekmez mi yaydan çıkmak üzere olan eleştiri oklarını. O zaman “neden daha nitelikli insanlar bu kadrolara yerleştirilmedi, yazıl değil mi devletin kadrosuna” demek daha doğru olmaz mı? Dünyanın her yerinde süreç şöyledir: birisi işini iyi yapmaz, aksatır vb. ise amirinden, sorumlu kişisinden, hocasından hesap sorulur. Nitekim bu konu hakkında atalarımızın “Üzüm üzüme baka baka kararır.”, “Anasına bak kızını al.” ve “İmam osurursa cemaat sıçar.” sözleriyle ifade ettiği yıllar öncesine dayanan naçizane tesbitleri de bulunmaktadır.

    MÜDEK konusunun ise tartışmalı olduğunu ve referans gösterilemeyeceğini düşünüyorum. Nitekim, aynı MÜDEK, Fizik dersleri için gerekliliği bölümümüz öğretim elemanlarınca 2 yıldır şiddetle sorgulanan laboratuar çalışmalarında nedense halen ısrar etmektedir.

    Son olarak “Teknolojiler universitelerden cikar.kişisel yaraticiligi ,yeni fikirleri onleyerek ben bunu sectim herkes bunu yapsin denilen bir kurumda ne uretim ne bilim ne de hic birsey ortaya cikmaz.” saptamasının doğru ancak yerinde olmayan bir saptama olduğunu düşünüyorum. Nitekim yazılar dikkatli(!) okunursa kimsenin aksini iddia etmediği görülecektir.

    Herkese çalışmalarında kolaylıklar dilerim,

    Önder.

    KAYNAKÇA

    (Parnas 1999) Parnas, D. L. “Software Engineering Programs Are Not Computer Science Programs”, IEEE Software, Kasım/Aralık 1999, s. 19-30.

    (Saiedian 2002) Saiedian, H., Bagert, D., ve Mead,N., “Software Engineering Programs: Dispelling the Myths and Misconceptions”, IEEE Software, Eylül/Ekim 2002, s. 35-41.

    1. Bence şu noktada @Vidanin Sesi’nin kimliğini açıklayarak bir cevap vermesi gerekiyor. @fxdev zaten benim ev arkadaşım da olduğu için ve kendisi adını sanını gizlemek için bir çaba sarf etmediğinden o konuda bir şey demiyorum.

      Benim Önder Hocama katılmadığım sadece iki nokta var:

      1. Ben derse gereksiz demiyorum. Lütfen bu yanlış anlaşılmasın. Ben gereksiz söylemini bir tek “Modern Biyoloji” için söyledim, ve hala da söylüyorum. Eğer onun dışında bir derse dediysem, o sınav dönemki sıradan sayıklamalardandır. Bu yazıda da dersin gereksizliğine dair hiçbir satır yoktur. Ama ödevin gereksiz olduğuna inanıyorum. Çünkü geçen dönem yaptıklarımızın kopyala yapıştırılması ve 3 kat uzunundan başka bir şey değildi. Belki bize sabır taşı olmayı öğretmiştir, ama dahası kesinlikle ve kesinlikle kopyala yapıştır, değiştir, hata ayıkla’dan fazlası değildi. Bu ödevin bana bir şey katması konusundaki görüşümün tabi büyük konuşmamak lazım ama, değişmeyeceğine adım gibi eminim desem yalan olmayacak. Tekrarlıyorum, ders değil, herhangi bir ödev değil, geçen seneki ASM ödevleri değil, bu ödevden katbekat uzun sürmüş nesne ödevi değil, windows projesi değil, Aylin Hoca’nın OS ödevleri değil, herhangi bir ödev değil, lablarla yaptığımız alıştırmalar da değil sadece ve sadece bu Snake Game ödevinin gereksiz olduğunu düşünüyorum. Bence “Bu öğrencilere bu ödev hakikaten yararlı olamamış olabilir” diye üzerinde beş dakika da olsa düşünülmeli. Sadece bu ödev için.

      2. Ben bu bölümde şimdiye kadar “Benim gösterdiğim program budur, bunu kullanacaksınız, o kadar!” diyen bir hoca şimdiye kadar hiç görmedim. Bu güzel. Sinan Hoca da zaten özgür olduğumuzu söyledi. Bu da süper. Ama şu cümle beni benden alıyor:

      ALINTI: IDE ise oldukça basit ve bizim projelerimiz için yeterlidir. Hangi yazılımları kullanacağımıza neyi öğreteceğimize müsade edinde biz karar verelim.

      Siz bir IDE’ye karar veriyorsunuz. E haklı olarak. Öğretecek sizlersiniz. Ama IDe’ye karar verirken, bence yazılımın kullanışlığını ve stabilitesini de hesaba katmanız gerekiyor. Hangi yazılımları kullanacağınıza siz karar veriyorsunuz, vermelisiniz çünkü eğitmensiniz ama yazılıma karar verirken, orası burası hata verip ikide bir çöken bir programa da karar vermemelisiniz inancındayım. Eleştirdiğim nokta budur. Tamam, bir yazılım önerilecek. Algoritmada da CodeBlocks önermişlerdi. Ama CodeBlocks ikide bir çökmüyordu. Hız problemi yoktu ve sağlamdı. Basitti de. Ve laf etmedi kimse. Ha beğenmeyen başkasını kullandı. Eleştirdiğim bu. Bize önerilen programın böyle sorunları olmamalı. Stabil olmalı. Bende öyle bir izlenim uyandı ki, hocamızın bahsettiği kütüphaneyi kullanan Google’da aratılınca ilk sırada gelen program bu. Herhangi bir şirket ya da bu işle uğraşan bir grup topluluk, geliştirmeler için bu kadar stabil olmayan bir programı ve simülasyon hızı bu kadar yavaş olan bir programı istese de kullanamaz gibi.

      En mükemmel IDE’yi bilemiyor olabilirsiniz tabiki ama. O kadar çok hata mesajı aldık ki kod yazarken, sanki daha önce hiç denenmemiş bu sorunlar hiç çıkmamış, bulunan ilk IDE bize verilmiş gibi geldi bize. O derece sorun çıkardı yani ide. En mükemmeli olmasa da, bari ortalama bir şey olsaydı.

      Derdim bu.

      Bunun dışındakiler beni aşar. Belki mezun olunca ve arkamı dönüp tekrar bakınca diyecek daha fazla şeyim olur. Ben şu anda öğrendiğime bakıyorum. Dersin adında “Windows” geçiyor önceki yorumumda dediğim gibi. Ama proje geliştirme konusunda o derse kazandığım tecrübeyi başka bir derste kazanmadım ben örnek verirsem.

      Yaptığım tüm ödevlerin bana bir şey katmasını istiyorum. Tüm ödevleri bitirince bir bakıyorum, acaba ben ne öğrendim diye. (Genelde) not olmuyor derdim. Örnek verirsem, Nesne Projesi bize sıfırdan başlanıp bir projenin nasıl geliştirileceğini ve yazılıma nasıl aktarılacağını teorik de olsa öğertmiş oldu. Windows bunu gerçekledi. İşletim sistemi ödevlerinde gerçek anlamda thread ve process kullandık, çok çekirdekli/işlemcili platformlara yönelik ufak bir yazılım yazdık. Başkaaaaa… Hımm… Geçen dönem, ASM’nin neden olduğu, ASM->Binary ilişkisi gibi şeyleri öğrendik, ASM’de sıralama yazarak işlerin alt seviyede nasıl işlediğini öğrendik. Alt seviyede nasıl düşünülür ve nasıl kod yazılır bunu öğrendik. Aklıma şimdi başka ödev gelmedi. Ama hepsinde ne öğrendiğimi rahat rahat söyleyebiliyorum gördüğünüz gibi. Hem de “büyük resmi” bile görmeden. Ufak şeyler ama, işe yaradığına inanmamı sağlıyor. Ve bunları not için yapmadım.

      Bunca örneğin hemen ardından, Snake Game ödevine bakıyorum, ve söyleyemiyorum ben ne öğrendim. Tek derdim bu.

      Dediğim gibi, diğer konular beni aşar. @Vicdanın Sesi ve @Arda tekrar yazarlarsa tartışırsınız. Benim diyeceğim, ben öğrendiğime bakarım.

      Hocam, yorumunuz için çok teşekkür ederim. Vaktinizi ayırdınız. Siteme değer kattınız.
      İyi sabahlar

  11. üzüldüğüm tek şey hic üzerine alinmamasi gereken değerli insanlarin bu yaziya alinmasi olmus.
    isimler onemli degil benim kim oldugumda onemli degil.Keşke herkes bu yaziya katilanlar gibi hassas olsada dönüp kendilerine bir baksalar.Aslinda benim söylememe gerekte yok.Zaten bahsettiğim durumu akademisyen arkadaslarimizda kendi aralarinda konusuyorlar ve biliyorlardir.

    Şimdiye kadar bir dünya ödev yaptim,ve hepsinden az cok birsey ogrendim.Ama bu ödev bana yorgunluktan başka birsey katmadı.Zaten bildigim seyleri hic bir yeni sey kullanmadan defalarca yazdim durdum.Bence anlamakta güclük cektiginiz nokta Umutunda belirttigi gibi “SADECE BU ODEVİN” amacina ulaşamamış olmasi.Belkide anlamak için yeterli efor sarfedilmedigi için de olabilir.Odev verilmesin mi diyorum ben? Daha yaratici ve faydali odevler verilebilir diyorum.Ama neden beni kimse anlamiyor??

    İşte bahsettigim sorun bu,hic bir asistan gelipte evet hata yapmis olabiliriz,yada birsey katmamis olabilir size demiyor.İnatla faydasi oldu siz bilmiyorsunuz gibi aşalayici bir ithamla karsi karsiyayiz.Çünkü dar bakış açısı hakim,sürekli “biz biliriz siz bilmezsiniz” Bu ogrencilerin kaci buyuk resmi sizden daha iyi gorebiliyor farkindamisiniz?Ogrencilerin bu potansiyelini gormezden gelip,sirf konum ve yaş itibariyle bu gibi ithamlarda bulunmalari beni bu yazilari yazmama sürüklüyor.

    Bir tane empati yetenegi olan bir asistan arkadasimiz da cikip desin evet bu kendini tekrarlayan ve cok faydali olmayan bi odevdi desin .Olabilir yahu,nedir bu sorun.yani her verilen odev mukemmel derece faydali olmak zorunda degil.faydasi olmamis da olabilir.niye buna itiraz ediyorsunuz ki?Olamazmi yani soyle bir kural mi var “ege universitesinde verilen her odev ogrencilere fayda saglar”. Bu mudur yani.Ben kimseyi suçlamiyorum da hakarette etmiyorum.Ama tepki aliyorum.Cunku asistan arkadaslarimiz elestirilmeye tahammul edemiyor.Biriside ciksin evet hakli yanlarin var,uzerinde dusunup daha iyi kararlar vermek icin dusunecegiz bu dediklerini desin. Kime zarari olur bunun??

  12. Ben her iki tarafa da hak vermekle beraber kendim dahil her iki tarafı eleştirmek istiyorum. Önce kendimden başlıyım:
    Ben dokuz eylül den mezun olup ilk araştırma görevliliğime başladığımda öğrencilere elimden geldiğince fazla bilgi depolamayı amaç edinmiştim. Hatta ilk haftalardaki basit lablara bile aşırı çalışarak giriyordum. Çünkü dokuz eylüldeki arş. gör. leri bir profesörden daha çok derse giriyordu ve bilgileri oldukça iyiydi. Ben de onlar gibi olmak istiyordum. Sonradan baktım ki egede durumlar hiç de öyle değil. Ne hocalar çok fazla lablar konusunda hassas ne de öğrenciler. Şöyle bir baktım kendime, ben ne için uğraşıyorum ki? Özellikle ne anlattığının öğrenciler için (çoğu için) bir önemi yok, pek takmıyorlar. Sonra baktım çok fazla bir şey anlatmadan da 45 dak. bir şekilde lab yapıp işini götüren asistanları da gördüm. Bir kaç kez onlar gibi denediğim olmuştur. Çalışıp veya çok şey vermeye çalışmak için laba gelmekten farksız. Çünkü öğrencilerde bir gariplik var, yada okulun çarkında düzeninde. Öyle bir düzen var ki burda “Vicdanın Sesi” (çok iddialı isim) gibi asıp kesen ben öğrenmek istiyorum diyenler lab ve ödevlerde ayrı bir karaktere bürünü veriyor. Aslında şunu demek istiyorum, bu okulun düzeni idealist öğrenciyi de araştırma görevlisini de kendine benzetiyor, pasifleştiriyor, kolaycılığa alıştırıyor. Bir iki sene içinde ne kadar idealist de olsanız kendinizi bir anda diğer asistanlar, hocalar, öğrenciler gibi buluverirsiniz (Belki de ben “Vicdanın sesi”nin bahsettiği asistanlardanımdır)

    Dolayısıyla kimse kendini sütten pak zannetmesin. Aybars hocanın içinde bir çok bilgiyi barındıran ödevleri bir alt sınıflardan bire bir alıp bize sunan kendilerini cin sanıp bizi saf zanneden safcin öğrenciler burda vicdanın sesi olamazlar. Yada ödev paylaşımı yapıp kendilerince faydalı gördükleri derslerin ödevlerini kendileri yapan (kapan) diğer önemsiz derslerdeki hamallık ödevlerini daha düşük seviyedeki arkadaşına kakalayıp mutualist bir ilişki içine giren okulumuzun sevgili başarılı öğrencileri de vicdanın sesi olamazlar (Bazıları istisna olabilir). Birbirimizi kandırmayalım 🙂

    Bu bölümde bazı asistanların daha fazla bildiği veya daha fazla yardımcı olduğu diğer bazılarının bunun tersi olduğu bir gerçek. Öte yandan bazı derslerin öğrenciler tarafından önemsendiği diğer derslerin kendilerince hiç bir şey ifade etmediği ve sadece dersten iyi not almak için derse girdikleri de bir gerçek (çok ender istisnalar olabilir)

    Ama hem öğrencileri yönlendiren hem de araştırma görevlilerini yönlendiren bölümün mentalitesi ve eğilimleridir. Genelde öğrenciler de piyasaya yönelik düşündüklerinden kafalarında piyasaya yönelik olan dersler önemlidir, diğerleri olmasa da olur görüşü vardır. Ne kadar doğrudur bilmiyorum. Ama ben akademisyen olarak bir olasılık istatistik dersini iyi vermedikleri veya iyi öğrenemediğim için üzülüyorum. Lisansta piyasada çalışacağını düşünen eski bir lisans öğrencisi olarak. Diğer taraftan dediğim gibi okulun yönlendirmesi de etkili bu konuda. Egedeki bir öğrenci için nesneye dayalı program geliştirme 1-2-3-…. diye giden dersler en önemli derslerdir çoğu öğrenciye göre, ama aynı şeyi başka bir üniversitedeki öğrenci söylemeyebilir…

    Neyse daha yazacaktım ama uzun kaçıyor.

    Doğan

  13. Sevgili Dogan Aydin,

    Oncelikle size bir teşekkürü bir borç bilirim.Umarim herkes sizi örnek alır.Gerek ogrenciler,gerek kendi asistanlar hakkindaki tüm tespitleriniz dogru ve yürekten katiliyorum.Sonunda beni anlayan birini gormek cok sevindirici.Bende aynen sizin gibi sadece bir tarafi suclamiyorum.Ayrica bölümümüzün gidisati hakkindaki rasyonel tespitleriniz cok yerinde olmuş.Benim tamda parmak basmak istedigim nokta bu idi.Ogrencilerinde,asistanlarinda,hatta profesorlerin bile hatalari olabilecegini ,bunlarin dile getirildigi zaman ise körü körüne itiraz etmemek gerektigini vurgulamaya çalışıyorum.

    Sizinde belirttiginiz gibi ,eger bir odev seneler gecmesine ragmen tekrar tekrar veriliyorsa ve bu iliskiden herkes haberdarsa bunun faydali bir uygulama olmadigi ortadadir.Farkli odev verilsin denildigi zaman ogrencilere cikismak yerine evet burda bir yanlislik var ,faydali bir uygulama degil bu diyebilmekte buyuk bir erdemdir.Ben ve benim gibi gercekten bu tür projeleri yapmaktan zevk alan bir sürü arkadasta var,mutualist iliskilerini surdurende var.

    nasil iyi ogrenci kotu ogrenci ,basarili ogrenci basarisiz ogrenci oluyorsa,Basarili asistan ,basarisiz asistan da vardir,bunun aksini savunmak akil kari degildir.

    Dogan beyi buradan tespitleri ve empati yeteneği vede dürüstlüğü açısından tekrar tebrik ediyorum.

    Bölümümüzün durmunun kötüye gitmesi ise herkesin belkide farkinda oldugu bir gerçektir.Bu durumu öğrencilerin başarisizligindan anliyoruz.Ama öğrencilerin seviyesinin düşmesi,başarisiz olmalarinin esas sebebi ise,verilen derslerin nasil işlendigi,ne derece yetkin insanlarin bu dersi verdiği ile doğrudan orantilidir.bu konudada yine hem fikir olamiyorsak ben bundan sonra yazi yazmayacagim.kısır bir tartisma ortami yaratma amacinda değilim.biraz olsun bazi gercekleri ve tespitlerimi sunmak istedim.İstegim Ege bilgisayar mühendisliginin daha başarili olmasidir.

    Haddim olmayacagini dusunenler olabilir,ama hatali durumlari ortaya koyup bir nevi Uyandirici,devindirici bir durum yaratmak istedim ki,eger hatalarini goremiyorlarsa ve iyi niyete sahiplerse bundan bir ders cikarip daha faydali olabilsinler.Ben soylemesem bir gun baska biri cikip illaki bu durumu ortaya koycakti.Güneş balçıkla sivanmaz nitekim.”sen kendine bak millete ders vermek sana mi düştü “diyenlere saygilarimi iletir,beni anlayan ve anlamayan herkese teşekkür ederim.

  14. Merhabalar, Vicdanın Sesi takma isimli arkadaşımın yazdığı yorumda geçen ve Sistem Programlama dersine ilişkin cümleler hakkında düzeltme yapmak istiyorum. Hatırlatmak gerekirse cümleler şu şekilde idi: ” öğrencilerin feedback lerine kulak verin.Öğrenciler IBM 360 sistemlerinin gosterildigi Sistem Programlama dersini elestiriyordu.ama yine ayni mantalitedeki arastirma gorevlileri,bunun ne kadar gerekli bir ders olduguna dair sayfalarca size bilgi verebilridi.ne oldu MÜDEK bu dersin artik günümüzde uygulama alani olmadigina ve gereksiz olduguna karar vererek müfredat tan cikardi.” Düzeltmek gerekirse işin aslı ve doğrusu şu şekildedir: Derste 14 hafta boyunca IBM 370 sistemi assembly’si anlatıldığı dönemlerde öğrencilerden eleştiri geldiği doğrudur. Bu eleştiriler çerçevesinde dersin son 5 yılında IBM 370 assembly konusu 2 haftaya indirilmiş (daha net olarak ifade etmek gerekirse, assembler’ın pass-1 ve pass-2 algoritmalarının anlatıldığı durum çalışması şekline getirilmiş), kalan haftalarda dünyada Sistem Programlama derslerinde çok tutulan bir kitap olan “System Software: An Introduction to Systems Programming, Leland L. Beck” kitabından 1, 2, 3 ve 5. bölümler izlenerek öğrencilerin Assembler (Dikkat çekmek isterim; Assembly dili değil!, derleyicisinin yazımı…), Linker, Loader, Derleyici Kuramına Giriş, Ayrıştırma Algoritmaları gibi konularda bilgi sahibi olmaları amaçlanmıştır. BUNA RAĞMEN, DERSİN ÖĞRETİM ÜYESİ tarafından Sistem Programlama dersinin, Assembly Dili ile Prog., Mikroişlemciler, İşletim Sistemleri, Bilgisayar Mimarisi gibi dersler ile kesiştiği konulara sahip olduğu düşünülüp, daha güncel başka derslere yer açmak için Sistem Programlama dersinin kaldırılması doğrultusunda DERSİ VEREN ÖĞRETİM ÜYESİ tarafından Eğitim Komisyonuna dilekçe verilmiştir. DERSİN KALDIRILMASI BÖLÜM MÜDEK RAPORU HAZIRLANMADAN ve MÜDEK DENETÇİLERİ BÖLÜMÜMÜZE GELMEDEN gerçekleşmiştir. Yorumda belirtildiği şekli ile MÜDEK denetçilerinin inceleme yapıp dersi eğitim planından kaldırtmaları gibi bir durum KESİNLİKLE söz konusu değildir. Belki de tam tersi olarak son işlendiği şekli ile müfredatta kalmasını önerme ihtimalleri de olabilirdi. Kaldı ki Donanım Anabilim Dalı Başkanının, Sistem Programlama dersinin son 5 yıldır işlenen şekli ile yararlı olabileceği ve eğitim planında kalmasının düşünülmesi şeklindeki önerilerine rağmen, dersin kapatılması için öğretim üyesi tarafından dilekçe verilmiştir. Buna ilişkin belgeler Eğitim Komisyonu Başkanı Prof.Dr. Levent Toker’den elde edilebilecektir. Diğer bir konu olarak da, daha önceleri IBM 370 mimarisi üzerinde verilirken, bölümde hiçbir zaman Sistem Programlama dersinin gerekliliğini sayfalarca savunmak isteyen bir asistan olduğunu hatırlamıyorum. Lütfen, detaylarından emin olmadığımız süreçler hakkında yorum yaparken daha dikkatli olalım. Herkese teşekkürler.

  15. Merhabalar,

    Eleştiri yapıcı olmalı, hepimizi bir sonuca götürmeli ve özünde birşeyi değiştirmek üzerine olmalıdır.
    Öncelikle, buraya fikir yazarken içerisinde yer alınmayan bir süreci kulaktan dolma bilgilerle değerlendirmek yanlıştır. Eleştirilerdeki analiz sürecinin eksik olduğunu düşünmekteyim. Biraz analiz yapalım dilerseniz.

    6 haftalık labaratuvar sürecimiz oldu.Bu süreçten bazı labların sonunda öğrencilere bir şikayetleri olup olmadığını sordum. Bir eleştiriniz var mı, lablar nasıl gidiyor diye sorular yönelttim. Amacımız öğrencilerin de süreç içerisinde yer almaları idi. Hiçbir öğrencimiz en ufak bir eleştiri getirmedi.

    Dersin dönem projesini öğrenciler için faydalı bir proje olmasını hedeflediğimiz için verdik. Hiçbir zaman öğrencileri boşu boşuna uğraştıracak bir proje verme taraftarı değiliz. Proje ilan edildi ve öğrencilerimizin yaklaşık 20 günlük bir süreleri vardı . Bu süreçte projenin içeriğine ilişkin gelen eleştiriler genelde hocam proje çok zor ve proje yapmak bizi aşar şeklindeydi. Bir tane öğrencimiz gelerek hocam proje bence faydasız boşuna uğraşıyoruz dememiştir.

    6 haftalık lab sürecinde IDE’ye de en ufak bir eleştiri öğrencilerimizden gelmemiştir. Hocam IDE çok kötü, yetersiz, çalışmıyor gibi bir yorum kimseden duymadım. Öğrenciler hocam bu IDE yerine şunu kullanabilir miyim diye sorduklarında hayır bunu kullanacaksınız da demedik. Sorun şudur ki öğrencilerimiz ödevle uğraşmaya geç başlamışlardır. Bu yaşanan sorunlar bu yüzdendir. Kaldı ki bazı öğrencilerimizin projeyi yaparken sorun yaşamadıklarını bizzat kendilerine sorarak öğrenmiş bulunmaktayım. Bir sürü dersin projeyisi olabilir. Ancak 20 günlük bir süreye sahip bir proje için 15 saat uğraşmak ki bu dersin o dönemki tek projesidir, çok mu fazladır?

    Her öğrenci kendi ilgili alanına yönelik projelerde daha fazla fayda görebilir. Ben bir gömülü sistemci olarak bu projenin faydalarının öğrenciler tarafından görüldüğü inancındayım. Öncelikle projenin hedeflerini belirtmek sonra da bunları açmak isterim.

    Projenin hedefleri
    – Kısıtlı kaynaklara sahip bir donanım üzerinde bir yazılım problemini alt seviye programlama dili kullanarak geliştirebilme
    – Gömülü sistemler için yazılım geliştirme sürecindeki problemleri ve zorlukları kavrayabilme
    – Alt seviye yazılım geliştirme araçlarının kısıtlarının farkına varabilme
    – Açık kaynak kodlu yazılım geliştirme platformlarının problemlerini kavrayabilme

    Gömülü sistem yazılımları geliştirilirken profesyönel yazılımlar kullanıldığı gibi açık kaynak kodlu yazılımlar da kullanılıyor. Hatta çoğu gömülü sistem firması ya da araştırma kurumları açık kaynak kodlu ve linux üzerinde çalışan yazılımlara yönelmişlerdir. Bu benim takip ve bilgi sahibi olduğum bir süreçtir. Hatta şöyle söyleyeyim doktora araştırmamın bir parçası olan kablosuz algılayıcı düğümlerini programlamak için bile TinyOS açık kaynak kodlu işletim sistemini kullanmaktayız. Berkeley Üniversitesi tarafından geliştirilmiş bu yazılım bizim için olmazsa olmazdır. Bu yazılımın kendi içinde diğer profesyönel yazılımların da barındırdığı bir sürü hata mevcuttur. Hatta şöyle söyleyeyim, TinyOS içindeki bir hata bana tamı tamına 14 gün kaybettirmiştir.

    Projenin hedeflerinden biri öğrencilerin bu sürece yakınlaşmasını sağlamaktır. Demek istediğim şudur ki değerli öğrenciler eğer gömülü sistemler üzerine çalışacaksanız gömülü sistemlerdeki açık kaynak kodlu yazılım geliştirme araçları ve yazılım geliştirme süreci çok çok basit anlamda bu şekildedir, elde olan bunlardır. Biz bunları kullanıyoruz. Siz kullandığınız bir yazılımdan ötürü günler kaybedebilirsiniz. Hatta şöyle diyim, sizin çok güvendiğiniz derleyiciler bile size öyle abuk sabuk hatalar verebilir ki forumlardan o hatayı bulup ayıklamak için uğraşırsınız. Tabi eğer hatayla başkası karşılaştıysa ve şanslıysanız. Öğrencilerimiz bu süreci gözlemlemiş ve öğrenmişlerdir.

    Diğer bir sonuç, kısıtlı kaynaklarda yazılım geliştirme sorunudur. İlk dönemki birleştirici dili ile programlara bu kavramı içinde barındırmıyordu. Bu dönem, basit bir yılan oyununun bile kısıtlı bir komut setine sahip donanım üzerinde nasıl geliştirildiğini gözlemledik. Bu, yine benim üzerinde araştırma yaptığım kablosuz algılayıcı düğümleri için hem uygulama hem de protokol geliştirmek isteyecek öğrencilerin neyin ne olduğunu bilerek bir işe girmesini sağlayacaktır. Kısıtlı bir sistemde iki sayıyı toplamak bile bir problemdir.

    Diğer bir nokta, bu dönemki labların fiziksel bir donanım üzerinde yapılması hedeflenmişti ancak donanım alım işinde bazı problemler ortaya çıktı. Her zaman öğrencilerimizin daha fazla şey görmesini, Köy Enstitüleri’nde olduğu gibi pratik yaparak gözlemleyerek öğrenmelerinin teşvik edilmesi taraftarıyız. Ancak donanım alım süreci bizi yine ve yeniden simülasyon ortamını kullanılmasına yönlendirdi. Ancak şunu belirtmeliyim ki, direk donanımlar üzerinde de çalışma yapsaydık çok zaman kaybettirici ve yorucu anlarımız olacaktı. Kodun derlenmesi, donanıma aktarılması, hatalarının ayıklanması yine benzer sorunları içerecekti. Bu işin doğasında ciddi bir emek var arkadaşlar. Saatlerinizi kaybedebileceğiniz bir yorucu süreç.

    Linux üzerinde sistem geliştirmeyi hedeflediğimiz için IDE’yi bizzat ben araştırdım ve açık kaynak kodlu 8051 simülasyonu yapabilen bu aracı beğendim. Bu google’da ilk aramamın sonucu değildi elbette. Dediğim gibi öğrencilerimiz heyecanlı, herşeye eleştirel yaklaşıyor. Çok güzel, eleştirin tabi ama bilerek.

    Ödevin kopyala ve yapıştır sürecine gelince. Bir 3. sınıf öğrencisinin kopyala yapıştır kod geliştirmek yerine kodu yeniden kullanılabilir parçalara ayırması gerekirdi. Projemiz için prosedürlere ayırma tasarımda istediğimiz bir noktaydı. Ben ödevi daha az satır kodla daha prosedürel geliştirmiş projeler de inceledim. Demekki kod geliştirme ve tasarım sürecinizde hatalar var. Hiçbir sistem çok fazla kopyala ve yapıştır barındırmaz ki bölümümzde her öğrenci prosedürel programlama biliyor.

    Şimdi bu süreçte ödevimizi körü körüne savunmadığım ve eleştiriye açık olduğum anlaşılmış mıdır? Öğrencilerimizin ve Vicdanın Sesi’nin göremediği noktalar var mıdır? Ek olarak tek bir öğrencinin eleştirisini genel bir eleştiri olarak kabul etmek vicdanımızın sesini dinlemekle eş değer olabilir mi? Ödevi beğenen ve faydalı bulan öğrencilerimiz de acaba var mıdır? Ya da soruyu şöyle sormak gerekir öğrenciler projeleri beğenmek zorundalar mıdır? Doğan’ın da belirttiği gibi lisansta hiçbirşey ifade etmeyen bir istatistik dersi, lisansüstünde ne kadar anlamlı olabiliyor. İstatistikten bir proje verilse, öğrencilerimizin çoğunun çok hoşnutsuz olacaklarına eminim.

    Bir diğer nokta, eleştiri üsluplarını beğenmiyorum. Vicdanın Sesi’nin üslubu zaten bir felaket.Sürekli “biz biliriz siz bilmezsiniz” cümlesini öne çıkarmasını da anlamadım. Yazdıklarımı sanırım dikkatli okunmuyor. Yazdıklarımdan öyle bir şey çıkarmanız, ancak dikkatli okumamanızdan ya da okuduklarınızı anlamamanızdan ileri gelir. Tabiki benim bildiğim ve sizlerin bilmediğiniz şeyler olacak. Ve onları ben sizlerin bilmesini sağlamakla görevliyim. Beraber bildiklerimiz de var elbette. Şüphesiz sizin bildiğiniz benim bilmediklerimin de olduğu gibi. Ama sizin bilmediğiniz ve bildiğinizi zannettiğiniz şeyleri eğer ben biliyorsam bunları ortaya koymam kaçınılmazdır. Bunu çok bilmişlik olarak görüyorsanız, sizinki de cahilliktir. İnsan ne bildiğini bilmelidir.

    Ek olarak, eğer asistanlardan memnun değilseniz bunu memnun olmadığınız asistanlara isminizi ve cisminizi açık açık göstererek söyleyiniz. Vicdanın Sesi ismini gizleyerek ve genel konuşarak bence dediklerinin arkasında duramamaktadır. Lütfen hangi asistandan memnun değilsiniz, kim yatıyor kim çalışmıyor, kim bilgili kim bilgisiz isimlerini vererek ortaya koyunuz. Hocalar için de geçerli, hangi hocayı beğenmiyorsunuz? İsmi nedir? Siz ne iş yapıyorsunuz? Göreviniz nedir? Şikayetlerinizi giderecek çalışmalar içerisine girdiniz mi? İsim vermeden genel eleştiriler yapmak kolaydır. Madem eleştirileriniz var, neden bunu asistanlara direk söylemiyor ve buraya yazıyorsunuz? Sizin buraya yazdığınız eleştirilerin hiçbirini üzerime alınmamakla beraber, hangi kişileri eleştirdiğinizi bilmek en doğal hakkımdır. Yoksa dediklerinizi ciddiye almıyorum.

    Biz öğrencilerimizi seviyoruz ve onlara değer veriyoruz. Gözlemlediğimiz kadarıyla hepsi öğrenmeye ve üretmeye açlar. Yanlış yönelme ve yönlendirilme, yanlış eğitilme ve bilgilendirilme öğrencilerimizin bazen başarısız olmasına bazen ise yanlış hareketlerde ve yorumlarda bulunmalarına neden oluyor. Umut bizim değerli ve çalışkan öğrencilerimizden bir tanesidir. Ancak üslup problemi yaşamaktadır. Bazı yargıları da yanlıştır. Bunları değiştirmek, dönüştürmek ve Umut’un daha da gelişmesini ve bazı gerçeklerin farkına varmasını sağlamak bizim sorumluluğumuzdadır. Ülke olarak Umut’a arkamızı dönme ya da onu kaybetme lüksümüz yoktur.

    İçinde bulunduğumuz koşullarda, herkesin bir sorumluluğunun olduğunu düşünüyorum. Bu sorumluluklardan biri açık kaynak kodlu yazılımlara yönelip ülkenin yazılım bağımlılığının ortadan kaldırılması gerektiğini gören bilinçli öğrenciler yetiştirmektir. Bir diğeri lisansta herkesin heveslendiği teknolojik kavramların aslında çok da anlam taşımadığının, esas işin lisansüstü araştırma olduğu bilincinin öğrencilere verilmesidir. Bunun için öğrencilerin biraz daha teorik işlerle ilgilenmesini ya da aktif araştırma yapılan konulara yönelmelerini sağlamak boynumuzun borcudur.

    Ülkenin Microsoft yazılımı kullanıp muhasebe programı yapan taşeron firmalarda çalışan mühendislere ihtiyacı yoktur. Bölümümüz bir Microsoft üniversitesi ya da Microsoft Institute of Technology(MIT) de değildir. Buradan bilgi çıkmalı ve bu bilgi üretime yani teknolojiye dönüştürülmelidir. C#, Visual Basic, ASPX bunların hepsi gelir geçer. Yarın Microsoft Ğ# programlama dilini çıkarabilir. Bunu mu öğreteceğiz gençlere? Gençlerin yapması gereken şey https://tr.wikipedia.org/wiki/Devrim_(otomobil) bağındaki Devrim otomobilinin kendi mühendislik alanlarındaki benzerini yapabilmektir. Bunun için mücadele etmektir. Alttan bunun savaşımı vermektir. Merak etmeyin, bizler de kendi çapımızda bir mücadelenin içerisindeyiz.

    Burada elimden geldiğince yapıcı olmaya çalıştım. Çünkü eleştirmek için eleştiren insanların her yerde olduğunu görüyoruz. Vicdanın Sesi saldırgan bir yazım tarzı ile haklı hale gelemez. Kendisi öğrenci dostu olarak görünmeye çalışmakta, ancak gerçek öğrenci dostu, öğrenciyi içinde bulunduğu çıkmazdan kurtaran, düzenin bir çarkı olmasını engelleyen, bilgi ve bilim üretmesini sağlayan kişilerdir. Bu kişilerin kim olduğunu süreçler ve tarih belirleyecektir. Ve şundan çok eminim ki bu kişiler bizim üniversitelerimizde vardır.

    Herkese sevgiler.

  16. @Herkes: Ufak bir not düşmek istiyorum. Her ne kadar bu bölümdeki hiçbir araştırma görevlisi ve hocanın “takacağına” inanmasam da, yine de kendi mezuniyetimi garanti altına almak adına, içerisinde herhangi bir isim barındıran ve doğrudan bir kişiyi hedef alan hiçbir yorumu onaylamayacağımı belirtmek isterim.

    Tekrarlıyorum, bizim bölümde eleştiri kaldıramayıp “takacak” hoca olduğuna inanmıyorum, ama olmaz olmaz deme olmaz olmaz. O yüzden böyle bir eleştiri yapmak isteyen varsa,

    1. Sinan Hoca ile görüşlerini doğrudan paylaşsın.
    2. Bir gün toplanalım, açık oturum gibi bir şey yapalım. Bölüm başkanımız ve başka değerli hocalarımızı da davet edelim.
    3. Bir forum/blog açıp orada yazın. UBenzer’de doğrudan kişiyi hedef alan yorumları onaylamak bana kendi adıma pek akıl karı gelmedi.

    Ha bu korkaklık falansa, öyleyim. 😀

    Bunun dışında, buradaki kıvamda tartışmaya devam edebiliriz.

    @Sinan Hocam:

    1. Bu kadar uzun çaplı bir projeye başlamadan ve yazdıklarımız 300 satırı geçmeden önce, simülasyonda herhangi bir yavaşlık olmuyor/fark edilmiyor. Bu yüzden önceden fark edemedik. Çökmeler de, simple keypad kullanmadan önce çok fazla olmadığından onu da projeye başlamadan fark etmedik. Şikayet etmememizin sebebi budur.

    2. Alt seviye yazılım geliştirme araçlarının kısıtlarını farkına fazlasıyla vardık.

    3. Size gelip en başta bu proje faydasız dememein nedeni: Daha yapıp bitirmeden yorum yapmak haddimi aşar. Önce bitirip bana bu proje ne öğretti sorusunu kendime sormam gerekiyor. Yani projeyi yaptıktan sonra öğrendiklerime bakarak işe yarar ya da yaramaz diyebiliyorum kendi çapımda.

    4. Son olarak, bizimle daha kısa ve daha prosedürel yazılmış daha uygun bir ödevi web sitenizde paylaşırsanız, (ve bunu finallerden önce yaparsanız) biz de daha uygun bir programlama nasıl yapılır, hatalarımız nelerdir görme şansı yakalarız. Böylece bir şeyler öğreniriz ve düzeltiriz. Sadece kötü kod yazdığımızı bilmek bizim için pek bir şey değiştirmiyor ve bize faydası olmuyor. Özgür Gümüş hocamız tüm algoritma ödevlerinde böyle bir yol izlerdi.

    Yorumlarınız için tekrar teşekkür ederim.
    İyi günler

  17. Sinan bey sizi anlamiyorum.sizden bahsetmedigim halde hala kizgin tavriniz devam ediyor.Ne yapmami önerirsiniz yani,susayim mi ? Konusmayayim mi? Size bir hakaret mi ettim? Şahsiniza yönelik kötü bir kelime mi kullandim?Nedir sizi kizdiran?

    yazdiklarimi iyi oku dediginiz icin sizin yazilarinizdan alintilar yapiyorum.Ogrencilere bakis acinizin ne oldgunu birazda siz gorun isterseniz.tum yorumlarinizdan derleme yapacagim..

    1–” Öncelikle yazının oldukça “ukalaca” yazıldığını …. ” Umuta ukala diyorsunuz.

    sonra odevi eleştiren öğrencilere :
    2–“Öncelikle “Bu insan benden daha bilgili ve bir uzmanlığa sahip. Acaba ben hata yapıyor olabilir miyim?” düşüncesi yerine herşeyi ben bilirim bunlar gereksiz denilmesi büyük bir —cahillik—- göstergesidir ”

    yine ogrencilere CAHİL diye hitap ediyorsunuz..

    3–“Bir diğer nokta, eleştiri üsluplarını beğenmiyorum. Vicdanın Sesi’nin üslubu zaten bir –felaket–.”
    “Umut bizim değerli ve çalışkan öğrencilerimizden bir tanesidir. Ancak üslup problemi yaşamaktadır.”

    ne umutun ne benim nede sizinle ayni gorusu paylasmayan herkesin üslübunu begenmiyorsunuz Sinan Bey.Şunuda söylemek isterim ki zaten begenmek zorunda değilsiniz.Burasi Umut Benzer’ in kişisel blogu dur,isteyen herkes istedigi üslüpta kişileri direk hedef almadan ve hakaret etmeden diledigi tarzda yorumunu yapabilir,zaten Umut arkadasimiz yorumlari okuduktan sonra onayliyor.

    Ben umut un üslup sorunu oldugunuda düşünmuyorum.Herkesin bir tarzi var ve bu özgür internet ortaminda diledigi tarzda blog unu yazar.. Buna kimsenin bir itiraz hakki yoktur,olamazda Sinan Bey.

    Ayrica;
    Benim burada ismimi aciklama zorunlulugum yok..Fikirlerimin arkasinda olmami ismimi aciklamama baglayacaksaniz evet durmuyorum fikirlerimin arkasainda deyip sizi mutlu edebilirim.Sizin tek arzunuz bu yorumlari yapan ogrencinin kim oldugunu ogrenmek.ben anonim yorum hakkimi sakli tutuyorum.zaten hic bir kisiyi direk hedef alraak bir saygisizlikta yapmadim.

    “Neden burada yaziyor,neden gelip konusmuyor ? ”
    efendim ben burdan yazmayi uygun gordum kendime,kişisel tercihlerimede müdahale edecek degilsiniz herhalde? Zaten ben sizden bahsetmedigim halde taktiniz bana..Kusura bakmayin ama burdan soz konusu olan kisileri açıklayip onlari rencide edecek ,küçük düşürecek bir saygisizlikta bulunamam.buna ne terbiyem müsade eder,nede kimseye bir faydasi olur.

    son olarak bana ve umuta ,ukala,cahil,felaket, diye direk hedef gostererek aşağilamada bulunan sizsiniz vede bizim üslübumuzu begenmiyorsunuz. Bu noktada inanin diyecek birşeyim yok.karari okuyucu versin.

    bende sizin üslübunuzu begenmiyorum sinan bey,ogrencilerinze ,cahil,ukala gibi ithamlarda bulunan daha once ne bir asistan,ne bir prof gordum….Burasi Umut Benzer in kişisel blogudur,Ege Universitesinin resmi sitesi degildir.Tarzini begenemediğiniz icin (ki goreceli bir kavram ,ben ve eminim bir cok kisi Umutun üslübundn memnun ve zevk alarak takip ediyor blogunu) kimseye Ukala diyemezsiniz. Bunu da aklinizdan cikarmayin lütfen….Buranin üslüp kurallari sizin kişisel degerlerinizle belirlenmiyor maalesef.Ama sizin blogunuzda yada ege uni resmi forumunda yazsaydik ,nasil bir tarz belirlenecegine karisma hakkiniz olurdu.Burasi kimsei zorla getirdigimiz,okumya ve yazmaya zorladigmiz bir blog degil.

    Ozgur internet dunyasinda fikirlerini herkes baskalarinin ozgurlugunu engellemeden diledigi tarzda diledigi sekilde yazisini yazar..Umut ta bende bunu yapiyoruz.Eger bizim tarzlarimizdan rahatsizsaniz okumama ozgurlugune sahip oldugunuzu hatirlamak isterim.

    Bu yazdiklarim tamamen benim kişisel fikirlerimdir,Umut ne dusunyor bilemem yorumlarimin da onunla hic bir ilgisi alakasi yoktur.Umutun avukati degilim.

  18. Sanırım Sinan haklı bu konuda ayrıca ödev mantıklı görünüyor. Tabii öğrenciler tarafından bakınca onların da haklılık payı var. Bu arada Vicdanın Sesi söylediklerimden sonra zeytinyağı gibi üste çıkması beni şaşırttı.

    Bu arada ben de samimi bir şekilde bi şeyler yazmaya çalışmıştım, amacım birilerine şirin görünüp bazısını üzmek değildi gayem. Öyle anlaşıldıysa kusura bakmayın. Zaten bu bloglarda bir şeyler yazma işinden pek bir şey anlamıyorum.

    Bu arada bir not:

    Aybars hoca sadece bir ödevinden ki 2 sene oluyor en az geçen seneki ödeve benzer bir şeyler sormuştu ve öğrenciler bunu hemen suistimal etmişlerdi. Şu an zaten Aybars hocanın ödevleri bu şekilde değildir. Oradaki eleştiri çoğu öğrencinin birşeyler öğrenmekten çok dersi bir şekilde geçmeye çalışmalarıydı. Bir yanlış anlaşılma da bu konuda olmaması için düzeltmek istedim.

    İyi akşamlar…

  19. Gelecek de karşınıza çıkacak olan sorunlara karşı deneyim, tecrübe ve pratiklik kazanıyorsunuz, eleştirdiğiniz ödevlerle. Bir de bu yönden bakınız. Akademisyenler elbette ki sizden daha iyi bilecek ne de olsa onlar da bu yollardan geçti ve şu anda , o zaman eleştirdikleri ödevlerin faydasını görüyorlar.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir